Kafka邮件丢失且Acks = all

时间:2019-04-11 18:50:17

标签: apache-kafka kafka-producer-api

我了解是否将Acks = all和min ISR设置为> = 2减少了消息丢失的可能性,因为有多个代理将消息存储在内存中。当生产者和经纪人之间的连接同时失败时会发生什么 消息确认之前为1,但请求已发送给领导者进行写操作。 写入了2条消息,但在确认期间失败

是否有可能丢失消息?

1 个答案:

答案 0 :(得分:1)

生产者将数据发送给经纪人时,实际上仅发送给一个人(领导者)。 Leader 经纪人应确认已收到消息。如果按照说明配置代理,则 leader 将等待来自副本的确认。如果出现问题,领导者不会发送自己的确认信息。当生产者未收到领导者的确认时,它将理解消息尚未传递。 为简单起见,我放弃了任何失败消息之前有一些退役。

假设

  1. 由于生产者未收到确认,因此它将重新发送原始消息。如果连接已恢复,则代理可以看到此消息已被接收。然后经纪人向生产者发送确认。

  2. 如果将邮件写入 leader ,但副本无法确认,则 leader 会将此类邮件视为未保存并从其存储中删除。 / p>