为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

猛跑小猪 2021-12-30 20:44:33
我发现属性 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(您还没有任何提交)。


查看完整回答
反对 回复 2021-12-30
?
慕村225694

TA贡献1880条经验 获得超4个赞

Offset 与此无关。您应该将其配置为从头开始读取的属性。在java中有类似seektobeginning的东西


查看完整回答
反对 回复 2021-12-30
  • 2 回答
  • 0 关注
  • 290 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号