producer
发送消息 1, 2, 3, 4
consumer
收到消息1,2,3,4
consumer
崩溃/断开连接
producer
发送消息 5、6、7
consumer
恢复并应该接收从 5 而不是 7 开始的消息
对于这种结果,我必须使用哪个
offset
值以及需要做什么其他更改/配置
当消费者加入消费者组时,它将获取最后提交的偏移量,因此如果在崩溃之前提交了最新的偏移量(因此为 4),它将重新开始从 5、6、7 读取。 当消费者启动但分配的分区没有提交的偏移量时,将使用
earliest
属性的 latest
和 auto.offset.reset
值。在这种情况下,您可以选择是否要从头开始(最早)或在最后一条之后(最新)重新阅读所有消息。
如果偏移量 5 不在 Kafka 分区中最早 auto.offset.reset
,会发生什么最早选项将从偏移量 6 或从头开始读取?
为了清楚地了解这种情况,我们需要了解当消费者加入同一个消费者组时会发生什么。
我们可以为 auto.offset.reset 配置设置两个值。
我。最早 - 从之前停止消耗的点开始消耗。 (根据你的例子从5开始)
ii.最新 - 从分配的分区中的最新偏移量开始消耗。 (根据你的例子从7开始)