Kafka - “一次交付”语义中的幂等生产者

时间:2017-07-08 15:33:55

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

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

问题在于,当我启动制作人时,我得到一个ConfigException,说acks必须设置为all-1(即使我将其设置为我作为参数传递给控制台脚本的producer.properties文件。)

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

详细信息:

在合成中,所采用的解决方案基于两个主要概念:

  • idempotent Producer 只能编写一次特定的消息,这要归功于在producer配置中引入了事务id 在多个情况下也可以保证原子性属性 单个主题的分区);
  • 在消费者方面,通过isolation.level=read_committed属性,我们现在只能在事务提交后才能读取消息。

1 个答案:

答案 0 :(得分:5)

控制台生产者设置自己的默认值。尝试添加--request-required-acks -1test="http://localhost:8080/course-single.html" 以将acks设置为all来代替默认值1。