我为Storm Pipeline设置了Kafka Spout。我不想从最新的偏移量或从头开始读取数据。有没有办法从可配置的偏移量中读取存储在zookeeper中的偏移量。 Storm为我们提供了从最新偏移或从头开始读取的方法。我不想要那种情况。
用例:偏移0部署的拓扑
偏移50改变了拓扑结构
偏移100检测到最近的拓扑有错误。想从偏移50开始。
我怎样才能实现同样的目标。
答案 0 :(得分:0)
KafkaSpout将从zookeeper中读取最后提交的偏移量。如果zookeeper中没有偏移量,它将使用配置的startOffsetTime。 KafkaSpout的默认配置如下。
public long startOffsetTime = kafka.api.OffsetRequest.EarliestTime();
如果更改startOffsetTime的值并设置KafkaConfig.ignoreZkOffsets = true,我认为您可以让消费者从特定偏移量开始。
如果ignoreZkOffsets等于true,则spout将始终从KafkaConfig.startOffsetTime定义的偏移量开始读取,如上所述。
另外,看看这篇文章。 How do I accurately get offsets of messages for a certain timestamp using OffsetRequest?