从早期偏移 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?
我已经为 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?