从早期偏移 Apache Storm 中读取

Reading from earlier offset Apache Storm

我已经为 Storm 管道设置了 Kafka Spout。我既不想从最新的偏移量也不想从头开始读取数据。有什么方法可以从可配置的偏移量中读取存储在 zookeeper 中的偏移量。 Storm 为我们提供了从最新偏移量或从头开始读取的方法。我不想要那种情况。

用例:偏移量 0 部署拓扑。
偏移量 50 改变了一个拓扑
偏移量 100 检测到最近的拓扑有错误。想从偏移量 50 开始。
我怎样才能达到同样的效果?

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?

Reference