背景:
從前一篇文章我們知道flink消費(fèi)kafka主題時是采用的手動assign指定分區(qū)的方式,這種消費(fèi)方式是不處理主題的rebalance操作的,也就是消費(fèi)者組中即使有消費(fèi)者退出或者進(jìn)入也是不會觸發(fā)消費(fèi)者所消費(fèi)的分區(qū)的,那么疑問就來了,那是否比如kafka主題分區(qū)變多,或者新增了滿足flink消費(fèi)條件的kafka主題時,flink的kafka消費(fèi)者是如何感知到并消費(fèi)的?
源碼追蹤:
1.入口類StreamSource的run方法,這是數(shù)據(jù)源函數(shù)
這個方法中runWithPartitionDiscovery內(nèi)容如下:
繼續(xù)往下,可以看到開啟了一個線程定時從broker中拉取監(jiān)聽的主題的分區(qū)數(shù)量
當(dāng)獲取到新增主題分區(qū)后,首先添加到KafkaFetch類的unassignedPartitionsQueue字段中,表明這個算子任務(wù)需要新增監(jiān)聽
注意KafkaFetch類的unassignedPartitionsQueue就是對應(yīng)的KafkaConsumerThread類的unassignedPartitionsQueue字段,
然后在KafkaConsumerThread的run方法中就會不斷檢查是否有新增分區(qū),如果有就使用assign指派文章來源:http://www.zghlxwxcb.cn/news/detail-631860.html
具體哪個分區(qū)指派給哪個算子任務(wù)的邏輯在如下代碼中文章來源地址http://www.zghlxwxcb.cn/news/detail-631860.html
到了這里,關(guān)于flink如何監(jiān)聽kafka主題配置變更的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!