【发布时间】:2021-04-22 17:08:03
【问题描述】:
我目前正在了解有关 Kafka Producer 的更多信息。我对文档中的以下段落感到有些困惑:
写入分区领导者的消息不是立即可读的 消费者不管生产者的确认设置如何。 当所有同步副本都确认写入时,则 消息被认为是已提交的,这使得它可以被阅读。 这确保消息不会因代理失败而丢失 他们已经被阅读了。请注意,这意味着消息 仅由领导者确认的(即 acks=1)可以是 如果分区领导者在副本复制之前失败,则丢失 信息。然而,这通常是一个合理的折衷方案 实践以确保在大多数情况下的耐用性,同时不影响 吞吐量太大了。
我的解释是,在领导者和复制的代理之间同步期间消息可能会丢失,即除非成功复制消息,否则不会提交消息。
我不明白 Java 应用程序如何(例如)屏蔽此消息丢失。 它在“唯一领导者”和完全复制之间收到不同的确认吗?
这在实践中通常是一个合理的折衷方案
怎么样?他们是否认为您应该记录失败的消息并手动重新排队?或者它是如何工作的?
【问题讨论】:
标签: apache-kafka kafka-producer-api