kafka队列不消费的一种情况(找错group的情况)

本文详细记录了一次关于Kafka消费者组管理的问题,描述了通过命令行检查topic消费情况时遇到的LAG不减且无消费者显示的困惑。经过排查,发现原因是混淆了消费者组ID与Kafka监听配置。正确识别和使用消费者组ID后,问题得到解决,显示了正确的LAG为0。文章强调了Kafka中消费者组、topic和LAG的重要性,以及配置时的注意事项。

一、问题概述

最近碰到了一个问题,使用命令查看kafka的某个topic的消费情况,发现这个topic没有消费者,剩余消息(LAG)一直是满的;
但是查看java后台日志,发现确实消费了这个topic,功能正常;

所以问题就是查看kafka的topic的消费情况时,LAG为什么不减少、并且显示没有消费者呢?

二、问题详情

1.kafka有一个命令,可以查看某个组中的topic的消费情况,样例如下:

./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --group commonGroupTest-push --describe

其中commonGroupTest-push是组名;
执行后的结果样例如下:
在这里插入图片描述
如图,组为commonGroupTest-push;
topic为basicLawExam;
显示剩余消息数(LAG)为69182;
没有消费者;

2.但是,查看java后台的代码,确实在监听basicLawExam;
查看日志,确实消费了这个topic里的消息,功能正常;

3.按道理这个LAG(剩余消息数)应该是0才对,并且应该有消费者;
但是不知道为什么,LAG只增不减,并且显示没有消费者。

三、原因与解决方法

1.虽然java后台功能正常,确实收到了该topic的消息;但是这个LAG显示的实在是看不懂,因此请教了其它同事。

2.结果发现,找错group了。

3.java后台代码有两个地方,如下:
在这里插入图片描述
在这里插入图片描述
其中,第一个图片,是xxx.java,配置了kafka消费者,消费topic为basicLawExam,id是basicLawExamId;
第二个图片,是application.yml,配置了group-id: commonGroupTest-push

4.当时我只看到yml中配置了group-id,于是执行了下方的查询kafka的topic消费情况的语句:

./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --group commonGroupTest-push --describe

执行这句的话,结果就是显示LAG数只增不减,并且没有消费者。

5.实际上,第一个图片中配置了id=“basicLawExamId”,这个id与group-id的含义相同;
yml中配置的group-id,应该是一个全局的group-id;
如果第一个图片中没有配置id的话,就会使用yml中配置的group-id;
但是第一个图片配置了id,所以,如果想看topic消费情况,需要执行下面这句命令:

./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --group basicLawExamId --describe

结果如下:
在这里插入图片描述
可以看到,group为basicLawExamId的topic反映的才是java后台消费的那个,这个LAG为0,才是正确结果。

6.至于为什么group为commonGroupTest-push中也会有basicLawExam这个topic,应该是yml中配置了全局group导致的。(如果不在yml中配置group、只在@KafkaListener中配置id的话,应该就更好区分了,这样的话就没有commonGroupTest-push这个多余的group、只有basicLawExamId这个group了)

四、总结

1.kafka中,生产者只有topic,只要配置向哪个topic扔消息即可。
2.kafka中,消费者除了指定topic,还要指定group;
同一个topic中的消息,如果有不同group的消费者的话,是可以重复消费消息的。(如果不想重复消费,就把多个消费者的 group-id/id 配置成一样的)
3.yml中的group-id与@KafkaListener中的id的含义是相同的,需要注意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追逐梦想永不停

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值