消費者用了一段時間之後會自動斷開,不報錯,生產者不受影響
查看消費者是否還存在
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group test
發現消費者已經不消費
原因:
原來是在 kafka consumer 運行時,要和kafka集羣的協調節點做心跳交流,這也是kafka集羣給consumer做負載均衡的條件。但是但是consumer內部也會有一個計時器,記錄上一次向 kafka 集羣 poll 的時間,另外心跳線程會檢測該現在距上一次poll的時間,如果該時間差超過了設定時間(kafka consumer默認的是 5分鐘),就會想kafka集羣發出leaveGroup,這時kafka集羣會註銷掉該consumer 的信息
————————————————
版權聲明:本文爲CSDN博主「木號」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/goodluck_mh/article/details/79840331
解決方法:
kafka consumer 在消費消息時,不要使用阻塞方法,比如blockqueue、網絡發送設置超時時間
參考文檔