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

rh0*_*h0x 1 transactions exception atomic apache-kafka kafka-producer-api

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

问题在于,当我启动生产者时,我得到一个必须设置为or 的ConfigException说法(即使我在我作为参数传递给控制台脚本的producer.properties文件中进行了设置)。acksall-1

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

细节:

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

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

Han*_*sen 5

控制台生产者设置自己的默认值。尝试添加--request-required-acks "all"--request-required-acks -1设置所有选项,以代替默认值1。

  • 如果两次发布相同的内容,那么仍然是两条具有唯一消息ID的单独消息,因此EOS不适用。在许多应用程序中,您希望能够多次发布类似的消息。EOS仅对同一消息的多个副本进行重复数据删除,这些副本是由于失败和重试而异常创建的。 (5认同)