简记kafka group id相同导致的不同consumers启动后不消费和延时消费问题

场景: 在一个线程内,使用相同的brokers和group id等配置,根据传入的topic数量N,分别定义N个consumer,按定义顺序先后调用consumers消费

现象: 程序启动后,kafka消费线程正常初始化,调用poll尝试消费,一直没有返回消息. 程序启动10分钟左右后,开始正常消费.

 

分析定位:

程序启动后,发现不消费

1>查看kafka debug日志

Sending Heartbeat request to coordinator 192.168.44.88:9191 (id: 2147483647 rack: null)

Attempt to heartbeat failed since group is rebalancing

 

2>使用kafka自带脚本查看消费组的情况

bin/kafka-consumer-groups.sh --bootstrap-server 192.168.44.88:9191 --describe --group sample-consumer-group

发现Warning: Consumer group 'sample-consumer-group' is rebalancing. 

topic的LAG不为0,即有消息积压.

 

3>尝试更新kafka集群后和增加topic partitions后测试,发现问题依然存在,确认是程序问题.

4>尝试减少consumer和topic数量,只传入一个topic,消费正常. 

 

传入3个topic和传入1个topic时,对于每个topic而言,都只有一个consumer消费一个topic,为什么前者不正常二后者正常? 为什么前者会导致 kafka group rebalancing? 

比较测试条件差异,初步猜想是使用相同的group id 导致.

传入3个topic并分别让3个消费者使用不同的groupid消费后,发现消费正常,问题解决.

 

搜索资料,发现类似情况,参考

https://www.gonever.com/post/108

 

TODO:分析zookeeper数据和kakfa源码. 

posted @ 2019-08-23 19:32  zzblydia  阅读(...)  评论(...编辑  收藏