背景介绍
消费者正常消费一段时间后,断开连接,再次连接消费消费。发现尽管生产者一直在生产消息,但消费者却无法消费消息。
查询消费者组的信息:
出现警告:Warning: Consumer group 'ClientConsumer' is rebalancing
,导致消费者无法消费消息。一定要等待这个警告消失
若是警告:Warning: Consumer group 'ClientConsumer' is rebalancing
需要很长时间才能消失,那么导致很多消息都会滞后很长时间才能消费。
解决方法
由于启动一个consumer客户端仅订阅一个主题,理论不会出现groupId重复上线消费,那么猜测一下:“可能consumer客户端关闭后,并没有和kafka broker断开连接?”
测试了一下,发现通过UI关闭窗口按钮并不会运行关闭连接函数:rd_kafka_consumer_close(rk);,而是直接出去了。这就导致了consumer客户端并没有和kafka broker断开连接,然后相同groupId的客户端又重新上线消费,就会导致冲突,kafka broker需要等待一定的时间rebalancing。
不通过UI的关闭按钮退出,而是通过 Ctrl+C
中断信号退出,发现kafka broker中consumer group立即刷新了,也没有出过relancing warning了
注意:确保consumer client和kafka broker是完成断开连接操作,否则会引发relancing warning