kafka最早和最新的偏移值有什么区别

问题描述 投票:0回答:3

producer
发送消息 1, 2, 3, 4

consumer
收到消息1,2,3,4

consumer
崩溃/断开连接

producer
发送消息 5、6、7

consumer
恢复并应该接收从 5 而不是 7 开始的消息

对于这种结果,我必须使用哪个

offset
值以及需要做什么其他更改/配置

apache-kafka kafka-consumer-api
3个回答
80
投票

当消费者加入消费者组时,它将获取最后提交的偏移量,因此如果在崩溃之前提交了最新的偏移量(因此为 4),它将重新开始从 5、6、7 读取。 当消费者启动但分配的分区没有提交的偏移量时,将使用

earliest
属性的
latest
auto.offset.reset
值。在这种情况下,您可以选择是否要从头开始(最早)或在最后一条之后(最新)重新阅读所有消息。


0
投票

如果偏移量 5 不在 Kafka 分区中最早 auto.offset.reset

,会发生什么

最早选项将从偏移量 6 或从头开始读取?


-1
投票

为了清楚地了解这种情况,我们需要了解当消费者加入同一个消费者组时会发生什么。

  1. 加入消费者组,触发重新平衡并将分区分配给新消费者。
  2. 查找分配给消费者的分区的已提交偏移量。
  3. 检查 auto.offset.reset 配置参数来决定从哪里开始消费消息。

我们可以为 auto.offset.reset 配置设置两个值。

我。最早 - 从之前停止消耗的点开始消耗。 (根据你的例子从5开始)

ii.最新 - 从分配的分区中的最新偏移量开始消耗。 (根据你的例子从7开始)

© www.soinside.com 2019 - 2024. All rights reserved.