背景:
从前一篇文章我们知道flink消费kafka主题时是采用的手动assign指定分区的方式,这种消费方式是不处理主题的rebalance操作的,也就是消费者组中即使有消费者退出或者进入也是不会触发消费者所消费的分区的,那么疑问就来了,那是否比如kafka主题分区变多,或者新增了满足flink消费条件的kafka主题时,flink的kafka消费者是如何感知到并消费的?
源码追踪:
1.入口类StreamSource的run方法,这是数据源函数
这个方法中runWithPartitionDiscovery内容如下:
继续往下,可以看到开启了一个线程定时从broker中拉取监听的主题的分区数量
当获取到新增主题分区后,首先添加到KafkaFetch类的unassignedPartitionsQueue字段中,表明这个算子任务需要新增监听
注意KafkaFetch类的unassignedPartitionsQueue就是对应的KafkaConsumerThread类的unassignedPartitionsQueue字段,
然后在KafkaConsumerThread的run方法中就会不断检查是否有新增分区,如果有就使用assign指派
文章来源:https://www.toymoban.com/news/detail-631860.html
具体哪个分区指派给哪个算子任务的逻辑在如下代码中
文章来源地址https://www.toymoban.com/news/detail-631860.html
到了这里,关于flink如何监听kafka主题配置变更的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!