spring kafka listener 设置手动 ACK,测试没有 ACK,本以为会一直重复收到那条没有 ACK 的消息。 实际却没有,但是可以收到新的消息,重启以后 也没有收到就消息。 用./kafka-consumer-groups.sh --bootstrap-server kafka-cluster:9092 --describe --group xxxx 查看,的确没有提交偏移量,lag 越来越大。这是为什么?
1
hackingwu OP 是本因为本地也有存一个 offset,对吗?那我应该怎么测试?
|
2
amwyyyy 2021-05-12 11:02:39 +08:00
没有回复 ack 服务端不知道已经消费了,默认是不会消费失败重试的,需要配置 SeekToCurrentErrorHandler 。
|
3
skyleft 2021-05-12 11:43:13 +08:00
没提交 offset 的话,当前的消费者是会继续向下消费的,重新初始化消费者就可以收到了
|
4
hackingwu OP 1. client 在内存里也维护一个 offset,失败了没有 ACK, 还是会继续消费的,除非自己主动 seek 到出错的 offset,类似 SeekToCurrentErrorHandler 。
2. 重新启动了会继续从服务端的 offset 开始消费,我本地是没有从服务端的 offset 开始消费,是因为我本地的数据被删除,我的 offset 对应的是不存在,那么就按照 auto.offset.reset = latest 继续消费,所以我又遇到重启以后没有收到消息的。 |