Storm-kafka 0.8 plus,我可以从最新的偏移中读取吗?

时间:2014-04-04 04:59:27

标签: apache-storm

我有一个Kafka spout拓扑,有点像下面

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);

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

1 个答案:

答案 0 :(得分:7)

试试kafkaConfig.forceStartOffsetTime(-1)。最新Kafka偏移量为-1,最早可用偏移量为-2

编辑:

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

忽略Time中的“forceStartOffsetTime”,参数名称有点令人困惑。卡夫卡的抵消是数字,与任何时间概念都没有关系。 -1只是一种特殊的方式告诉Kafka鲸鱼从Kafka本身收集最新的偏移量(同上-2以获得最早的可用偏移量。)