用于FlinkKafkaProducer的ProducerConfig,具有精确的Once语义。

问题描述 投票:1回答:1

当使用Kafka API创建一个具有exactly-once语义的Kafka producer时,必须设置两个属性。transactional.id 必须设置为一个事务性id,以及 enable.idempotence 必须设置为true。

在Apache Flink中,一个 FlinkKafkaProducer 可以用一个参数来配置生产者所需的语义,特别是用值 Semantics.EXACTLY_ONCE 为正好一次语义。

从源码上看 FlinkKafkaProducer,交易ID是自动生成和维护的。然而,我没有发现任何地方 enable.idempotence 设置为true,对于 ProducerConfig 潜在的 KafkaProducer.

该财产是否 enable.idempotence 必须提供 ProducerConfig 给予 FlinkKafkaProducer,还是我有什么地方疏忽了?

apache-flink flink-streaming
1个回答
2
投票

不,不需要设置,因为在 Kafka文档:

如果设置了transactional.id,idempotence就会和idempotence所依赖的producer configs一起自动启用。

正如你所注意到的,在选择 Semantics.EXACTLY_ONCE Flink负责设置和控制 transactional.id 财产。

然而,有几个其他的财产,你可能会感兴趣的 此处. 我不知道现在怎么样了,但是我上次检查过了,默认的Kafka brokersclients配置实际上是允许在某些情况下发生数据丢失的。

© www.soinside.com 2019 - 2024. All rights reserved.