使用集群 Kafka 保证交付

Guaranteeing delivery with clustered Kafka

根据最近的一篇文章,Kafka 可以在复制配置下丢弃已确认的消息:

https://aphyr.com/posts/293-call-me-maybe-kafka

如果必须绝对确定消息已发送给消费者,此解决方案是否适用于所有情况:

即使在消息丢失的情况下它也能正常工作吗?这个图案有名字吗?

这似乎有点过度设计。跟踪消费者端的偏移量并提交或不提交偏移量就足够了,具体取决于您认为下游系统成功处理消息的内容。
Aphyr 发现的裂脑问题已通过 unclean.leader.election.enable 设置修复(我认为在 0.8.2.0 中),您需要将其设置为 false(默认为 true,因为它是最后一个-采取措施)。

您还应该查看 ack producer configuration setting,它决定了有多少同步副本需要确认写入才能被视为成功。

您可以在页面底部附近阅读有关这些设置和 Kafka 提供的一般交付保证的更多信息 here

PS 这可能值得跟踪 issue

希望对您有所帮助:)