Apache kafka 当卡夫卡制作者重新启动或失败时,幂等性会发生什么变化?

Apache kafka 当卡夫卡制作者重新启动或失败时,幂等性会发生什么变化?,apache-kafka,Apache Kafka,看起来重复数据消除是由Kafka broker通过以下方式在分区级别跟踪消息来执行的: 消息序列号 制作人id 我所阅读的所有内容都在讨论如何解决制作人或代理错误的问题,该错误导致制作人重试发送。那制片人什么时候下台呢?生产者id是由我控制的静态id,还是在每次注册生产者节点时由代理重新分配?如果生产者id被重新分配,并且与重新启动之前不同,那么会发生重复,对吗 我不明白为什么他们会这样设计producer id,但我在org.apache.kafka.clients.producer.Prod

看起来重复数据消除是由Kafka broker通过以下方式在分区级别跟踪消息来执行的:

  • 消息序列号
  • 制作人id
  • 我所阅读的所有内容都在讨论如何解决制作人或代理错误的问题,该错误导致制作人重试发送。那制片人什么时候下台呢?生产者id是由我控制的静态id,还是在每次注册生产者节点时由代理重新分配?如果生产者id被重新分配,并且与重新启动之前不同,那么会发生重复,对吗


    我不明白为什么他们会这样设计producer id,但我在
    org.apache.kafka.clients.producer.ProducerConfig
    中找不到任何
    producer id\u CONFIG
    ,所以它看起来就是这样设计的。

    这个场景中存在重复。我不知道为什么PID被设计成在会话之间是暂时的而不是持久的,但是从以下方面:

    这确保了,即使生产者必须在 如果失败,每条消息将在日志中保留一次。 此外,由于生产者的每个新实例都分配了一个新实例, 唯一的,PID,我们只能保证在一个 单一制作人会议

    编辑:看来这个问题是由我提供的TransacitonalId解决的。在上面链接的同一文档中有详细说明