flink如何监听kafka主题配置变更

背景:

从前一篇文章我们知道flink消费kafka主题时是采用的手动assign指定分区的方式,这种消费方式是不处理主题的rebalance操作的,也就是消费者组中即使有消费者退出或者进入也是不会触发消费者所消费的分区的,那么疑问就来了,那是否比如kafka主题分区变多,或者新增了满足flink消费条件的kafka主题时,flink的kafka消费者是如何感知到并消费的?

源码追踪:

1.入口类StreamSource的run方法,这是数据源函数
在这里插入图片描述
这个方法中runWithPartitionDiscovery内容如下:
在这里插入图片描述

继续往下,可以看到开启了一个线程定时从broker中拉取监听的主题的分区数量
在这里插入图片描述

当获取到新增主题分区后,首先添加到KafkaFetch类的unassignedPartitionsQueue字段中,表明这个算子任务需要新增监听
在这里插入图片描述
注意KafkaFetch类的unassignedPartitionsQueue就是对应的KafkaConsumerThread类的unassignedPartitionsQueue字段,
在这里插入图片描述

然后在KafkaConsumerThread的run方法中就会不断检查是否有新增分区,如果有就使用assign指派
在这里插入图片描述

具体哪个分区指派给哪个算子任务的逻辑在如下代码中
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值