嗯,你说的这个我知道。跟我的问题不太意义,不过我自己看源码解决了,给大家分享下。
1 无状态启动情况下:
(1)首先flink采用的是assign方式,非subscribe方式。
(2)指定offset消费:未指定offset的分区会默认使用group offset消费。
(3)指定timestamp消费:未查询到offset的分区会默认使用latest消费。
(4)指定latest消费/指定earliest消费/指定group offset消费:这几种没啥好说的,按照对应策略消费即可。
2 有状态启动情况下:
(1)对于存在状态的部分,按照状态中offset继续消费。
(2)对于不存在于
hi
Flink是可以感知到partition的增加的
消费kafka的时候设置一下KEY_PARTITION_DISCOVERY_INTERVAL_MILLIS这个参数 大于0就可以了
--
Sent from: http://apache-flink.147419.n8.nabble.com/
如题,flink任务当前从我了解来看,是直接先查询所有分区信息,然后assign方式指定分区消费的。
包括,之前多个任务使用相同group.id消费相同topic并不会相互影响,也是这个原因,因为是通过assign方式消费,而不是分组订阅方式。
当然相关的还有一个分区发现机制(我是开启的)。
在这种情况下,我想知道topic的分区扩容之后,flink能立即感知到分区多了吗?如果不能,我猜测会导致丢失数据,因为等发现新分区的时候,会默认使用kafka配置的latest方式消费。
不清楚我的猜测对不对,看看有没有人清楚,解答下,这俩天计划做分区扩容了,不清楚是否需要提前停flink任务。