我发现属性 auto.offset.reset=earliest 或 auto.offset.reset=latest。现在这是我的场景,有 1 个主题,1 个分区,1 个消费者例如,我已经开始制作人。Producer 向 Topic 发送 100 条记录。现在我开始消费者。根据属性 auto.offset.reset=earliest 我的消费者将从分区的 0 索引开始读取记录。现在,如果我的消费者执行 1-100 条记录的异步提交并出现故障。同时生产者再发送 100 条记录。当消费者出现时,它是从分区的0索引开始读取消息还是从分区的101索引开始读取并处理从101到200的记录。
2 回答

胡子哥哥
TA贡献1825条经验 获得超6个赞
从 Kafka 0.9 开始,如果您的提交成功,Kafka 会将消费者的进度存储在一个特殊的内部主题中__consumer_offsets
。该主题存储每个消费者组在一个主题和分区上消耗的偏移量。
因此,当您的消费者再次启动时(在同一个消费者组中!),它将继续从上次提交的偏移量(在您的示例中为 101)开始读取。auto.offset.reset
指定在没有信息的情况下的行为__consumer_offsets
(您还没有任何提交)。
添加回答
举报
0/150
提交
取消