我在网上找不到这个问题的确切答案,所以我想我可以尝试明确地询问:
我正在用 Java 编写一个 Kafka Producer。我想异步生成到我的主题的消息,并提供一个回调来记录错误/成功消息。我需要的是至少交付,我可以很好地忍受经纪人上的一些重复。
然后我偶然发现了 enable.idempotence=true 属性以确保一次性交付。见这里:https ://kafka.apache.org/23/javadoc/org/apache/kafka/clients/producer/KafkaProducer.html
如果我做对了,它的工作原理如下:
- 如果写入主题失败,Kafka 将自动重试。
- 默认情况下,这发生 INTEGER.MAX_VALUE 次。
现在我的问题是:我知道为 Kafka 事务提供回调是不必要的,但是如果我启用幂等性会发生什么。假设代理端出现严重故障,执行了 N 次重试尝试:我的错误处理回调是否也会触发并记录 N 次?即使启用了幂等性,在生产者端提供回调是否常见?