如果在生产者之后启动,Kafka 消费者不会读取生产者发送的消息

我发现属性 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的记录。


猛跑小猪
浏览 291回答 2
2回答

胡子哥哥

从 Kafka 0.9 开始,如果您的提交成功,Kafka 会将消费者的进度存储在一个特殊的内部主题中__consumer_offsets。该主题存储每个消费者组在一个主题和分区上消耗的偏移量。因此,当您的消费者再次启动时(在同一个消费者组中!),它将继续从上次提交的偏移量(在您的示例中为 101)开始读取。auto.offset.reset指定在没有信息的情况下的行为__consumer_offsets(您还没有任何提交)。

慕村225694

Offset 与此无关。您应该将其配置为从头开始读取的属性。在java中有类似seektobeginning的东西
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java