.net Kafka.Client多個Consumer Group對Topic消費不能完全覆蓋研究總結(二)


依據Partition和Consumer的Rebalance策略,找到Kafka.Client Rebalance代碼塊,還原本地環境,跟蹤調試,發現自定義Consumer Group 的Consumer並沒有分配到PartionID,如下圖、

image  

據此,基本就可以定位到不同組Consumer無法覆蓋Partition的問題根源了。

仔細閱讀Rebalance代碼,發現Kafka.Client 在獲取consumer時,並沒有根據Group做篩選,獲取到的是所有組的Consumer,如下圖

(此處只有兩個不同組的Consumer類型,每個Consumer會生成五個ConsumerThreadID,用於覆蓋partition)

image

定位curConsumer變量,從consumerPerTopicMap中獲取,找到consumerPerTopicMap的實現

image

此處確實沒有過濾

image

增加group過濾代碼。問題解決。

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM