Kafka 幂等生产者

use*_*872 3 apache-kafka

Kafka 文档说,同一个生产者会话可以使用幂等生产者,我无法理解这一点。

比如说,Kafka 为每条消息添加序列号,最后一个序列号在 Kafka 中维护(不确定它在哪里维护)。

它如何生成序列号以及它保存在哪里?

为什么生产者崩溃并再次出现时无法保持序列?

我怎样才能使它在生产者会话之间真正具有幂等性?

Mic*_*son 8

幂等生产者只在生产者进程的生命周期内有保证。如果它崩溃,新的幂等 Producer 将拥有不同的 ProducerId 并开始它自己的序列。

序列号只是从 0 开始,并为每条记录单调增加。如果记录无法传递,则会使用其现有序列号再次发送,以便代理对其进行重复数据删除(如果需要)。序列号是每个生产者和每个分区的。

目前,Kafka 不提供“继续”幂等生产者会话的方法。每次启动时,它都会获得一个新的唯一 ProducerId(由集群生成)