apache-storm – Storm-kafka 0.8 plus,我能从最新的偏移中读取吗?

我有一个Kafka喷口的拓扑结构,如下所示

SpoutConfig spoutConfig = new SpoutConfig(zkBrokerHosts, "some-topic","", "some-id");
spoutConfig.scheme = new SchemeAsMultiScheme(new StringScheme());
...

builder.setSpout("kafkaSpout",new KafkaSpout(spoutConfig),1);

当然它工作正常.

考虑到我的拓扑失败并再次运行它的情况,我希望KafkaSpout从该主题的最新偏移读取而不是消费者已阅读的最后偏移.

有什么选择吗?我试过了

spoutConfig.startOffsetTime=System.currentTimeMillis();

但似乎它不能按我的意愿工作.并且都没有kafkaConfig.forceStartOffsetTime(-2);

如果您有任何想法,请告诉我.

最佳答案
试试kafkaConfig.forceStartOffsetTime(-1). -1表示最新的Kafka偏移量,-2表示最早的可用偏移量.

编辑:

此外,您可以使用相同的选项强制spout从任何所需的偏移量开始消耗 – 只需将数字偏移量作为唯一参数传递.

忽略forceStartOffsetTime中的“Time”,参数名称有点混乱.卡夫卡的抵消是数字,与任何时间概念都没有关系. -1只是告诉Kafka喷口从Kafka本身收集最新偏移量的一种特殊方式(对于最早的可用偏移量,idem -2).

转载注明原文:apache-storm – Storm-kafka 0.8 plus,我能从最新的偏移中读取吗? - 代码日志