spring kafka 使用的一个问题

2021-05-11 19:19:48 +08:00
 hackingwu

spring kafka listener 设置手动 ACK,测试没有 ACK,本以为会一直重复收到那条没有 ACK 的消息。 实际却没有,但是可以收到新的消息,重启以后 也没有收到就消息。 用./kafka-consumer-groups.sh --bootstrap-server kafka-cluster:9092 --describe --group xxxx 查看,的确没有提交偏移量,lag 越来越大。这是为什么?

1375 次点击
所在节点    程序员
5 条回复
hackingwu
2021-05-11 19:42:05 +08:00
是本因为本地也有存一个 offset,对吗?那我应该怎么测试?
amwyyyy
2021-05-12 11:02:39 +08:00
没有回复 ack 服务端不知道已经消费了,默认是不会消费失败重试的,需要配置 SeekToCurrentErrorHandler 。
skyleft
2021-05-12 11:43:13 +08:00
没提交 offset 的话,当前的消费者是会继续向下消费的,重新初始化消费者就可以收到了
hackingwu
2021-05-12 12:00:16 +08:00
1. client 在内存里也维护一个 offset,失败了没有 ACK, 还是会继续消费的,除非自己主动 seek 到出错的 offset,类似 SeekToCurrentErrorHandler 。
2. 重新启动了会继续从服务端的 offset 开始消费,我本地是没有从服务端的 offset 开始消费,是因为我本地的数据被删除,我的 offset 对应的是不存在,那么就按照 auto.offset.reset = latest 继续消费,所以我又遇到重启以后没有收到消息的。
hackingwu
2021-05-12 12:30:54 +08:00
@hackingwu 如果 1~4 失败,5 成功了,那么 1~4 就不会重新消费了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/776315

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX