通过集群kafka保证交付

oxiaedzo  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(426)

根据最近的一篇文章,kafka可以在复制配置下丢弃已确认的消息:
https://aphyr.com/posts/293-call-me-maybe-kafka
如果必须绝对确定消息已传递给消费者,此解决方案是否适用于所有情况:
建立两个主题,一个用于发送,一个用于接收
producer发送消息,包括发送主题上的令牌(uuid)
producer独立于kafka,将发送的消息和令牌保存到本地存储
只有当生产者在接收主题上接收到来自使用者的确认消息时,才会从本地存储中删除发送的消息,该消息包含在发送主题上发送的相同令牌。
生产者使用相同的令牌定期重新发送消息,直到收到确认。唯一令牌确保即使消息被接收两次(第一次由于任何原因未被确认),消费者也会将其标识为重复。
即使在邮件丢失的情况下也能正常工作吗?这个图案有名字吗?

wxclj1h5

wxclj1h51#

这似乎有点过分了。只要在使用者端跟踪偏移量就足够了,并且根据您认为下游系统成功地处理了什么消息,就可以提交偏移量或不提交偏移量。
aphyr发现的分裂大脑问题是用 unclean.leader.election.enable 设置,您需要设置为 false (默认为 true ,因为这是最后的手段)。
你还应该看看 ack producer配置设置,该设置确定需要确认写入的同步复制副本数量才能被视为成功。
您可以阅读更多关于这些设置和Kafka提供的一般交货保证在这里,靠近页面底部。
ps这可能是值得追踪的问题。
希望有帮助:)

相关问题