exception - Kafka - "exactly once delivery"语义中的幂等生产者

标签 exception transactions apache-kafka atomic kafka-producer-api

从 2017 年 6 月 28 日发布的 Kafka 最新版本 (0.11.0.0) 开始,kafka 团队提供了新功能以支持一次性交付。 下载最新版本后,我尝试配置 Producer(通过 kafka-console- Producer.sh 脚本执行),如 Producer configs 中所述。 :我设置了 enable.idempotence=truetransactional.id=0A0A

问题是,当我启动生产者时,我收到一个 ConfigException ,指出 acks 必须设置为 all- 1 (即使我在 Producer.properties 文件中设置它,并将其作为参数传递给控制台脚本)。

这可能是无法使用控制台脚本设置幂等性的根本原因吗?此外,有没有办法通过提供的控制台脚本进行原子事务生成消息?

详细信息:

总的来说,所采用的解决方案基于两个主要概念:

  • 幂等生产者由于在生产者配置中引入了事务 ID,因此只能写入一次特定消息 在多个的情况下也保证原子性 单个主题的分区);
  • 在消费者方面,通过 isolation.level=read_commissed 属性,我们现在只能在提交事务后才能读取消息。

最佳答案

控制台制作者设置自己的默认值。尝试添加 --request-required-acks "all"--request-required-acks -1 将 ack 设置为 all 以代替默认值 1。

关于exception - Kafka - "exactly once delivery"语义中的幂等生产者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44987837/

相关文章:

java - 查询没有结果 JDBCTemplate

javascript - SQL 事务和 JavaScript Promises 有什么关系?

sql-server - Sql Server中的大事务,有什么问题吗?

apache-kafka - KSQL查询和表存储

apache-kafka - 如何用camel-kafka手动控制offset commit?

c# - 使用 ValidationException 类

c# - 源阵列不够长。检查 srcIndex 和长度,以及数组的下限

java - 当我已经拥有 BufferReader 对象时,为什么它要求我用 try catch 包围它?

php - 我需要(我永远需要)锁定共享模式吗?在交易中进行更新?

scala - Kafka MirrorMaker 的消费者没有从主题中获取所有消息