背景
Kafka分区数进行了扩容,但负责消费的Flink没有发现新的分区。
原因
Flink默认是不会动态发现新的分区的。
导致的问题
新kafka分区的数据没有被消费,导致堆积,严重的会导致数据丢失。
解决方案1
适用于低频扩容、缩容kafka分区的场景
重启Flink
,让Flink重新从Kafka获取分区数
解决方案2
适用于经常扩容、缩容kafka分区的场景
通过设置参数flink.partition-discovery.interval-millis
大于0,来开启自动获取分区。
flink.partition-discovery.interval-millis表示每过多少毫秒,会自动发现分区。
注意
Flink会从新分区的EARLIEST
位置开始消费,也就是最新位置开始消费,旧的数据不会再消费了。
如果需要动态发现topic,也是该参数控制的,不过仅限通过正则表达式指定topic的方式。
参考文章:
https://blog.csdn.net/zl18310999566/article/details/103736398