具有精确一次语义的 FlinkKafkaProducer 的 ProducerConfig
ProducerConfig for FlinkKafkaProducer with exactly-once semantics
使用 Kafka API 创建具有恰好一次语义的 Kafka 生产者时,必须设置两个属性:transactional.id
必须设置为事务 ID,enable.idempotence
必须设置为 true。
在 Apache Flink 中,可以为 FlinkKafkaProducer
配置生产者所需语义的参数,特别是为 exactly once 语义配置值 Semantics.EXACTLY_ONCE
。
查看 FlinkKafkaProducer
的源代码,交易 ID 是自动生成和维护的。但是,我没有发现任何地方 enable.idempotence
被设置为 true 底层 KafkaProducer
.
的 ProducerConfig
属性 enable.idempotence
是否必须在给 FlinkKafkaProducer
的 ProducerConfig
中提供,或者是否有我监督的内容?
不,不需要按照Kafka documentation中的说明进行设置:
If the transactional.id is set, idempotence is automatically enabled along with the producer configs which idempotence depends on.
正如您注意到的,在选择 Semantics.EXACTLY_ONCE
之后,Flink 负责设置和控制 transactional.id
属性。
不过,还有一些您可能感兴趣的其他属性 mentioned here。我不确定现在怎么样了,但正如我上次检查的那样,默认的 Kafka brokers/clients 配置实际上允许在某些情况下发生数据丢失。
使用 Kafka API 创建具有恰好一次语义的 Kafka 生产者时,必须设置两个属性:transactional.id
必须设置为事务 ID,enable.idempotence
必须设置为 true。
在 Apache Flink 中,可以为 FlinkKafkaProducer
配置生产者所需语义的参数,特别是为 exactly once 语义配置值 Semantics.EXACTLY_ONCE
。
查看 FlinkKafkaProducer
的源代码,交易 ID 是自动生成和维护的。但是,我没有发现任何地方 enable.idempotence
被设置为 true 底层 KafkaProducer
.
ProducerConfig
属性 enable.idempotence
是否必须在给 FlinkKafkaProducer
的 ProducerConfig
中提供,或者是否有我监督的内容?
不,不需要按照Kafka documentation中的说明进行设置:
If the transactional.id is set, idempotence is automatically enabled along with the producer configs which idempotence depends on.
正如您注意到的,在选择 Semantics.EXACTLY_ONCE
之后,Flink 负责设置和控制 transactional.id
属性。
不过,还有一些您可能感兴趣的其他属性 mentioned here。我不确定现在怎么样了,但正如我上次检查的那样,默认的 Kafka brokers/clients 配置实际上允许在某些情况下发生数据丢失。