Apache Kafka和消息传递保证

Cle*_*kod 7 java apache-kafka

我正在考虑将Apache Kafka用作许多订阅者的分布式消息发布者.它非常适合我,因为解决方案必须易于扩展.

Kafka的文档声明可以确认消息,从而确保消息传递.但是,今天我遇到了这篇文章,其中指出有些情况可能会丢失消息.再说一遍,这篇文章只在Google缓存中提供,所以我不知道它是否值得信赖......

所以我有一个疑问 - 是否有任何时刻,任何场景,消息将丢失?换句话说 - 我的主要要求是每条消息必须到达目的地.可以通过使用Apache Kafka来满足吗?这是这项工作的正确工具吗?

Joh*_*one 5

你要找的文章原文在这里:http : //engineering.onlive.com/2013/12/12/didnt-use-kafka/

如果您阅读完整的文章和评论,您会看到很多关注不是关于至少一次交付的保证,而是它已交付并由客户成功处理。对文章的最后几条评论,包括原作者的评论,似乎表明他对这种方法感到满意。

您可能还会发现这篇感兴趣的文章 - 类似的问题:

https://www.mail-archive.com/users%40kafka.apache.org/msg04492.html

并从一些文档:

因此,Kafka 有效地保证了默认至少一次交付,并允许用户通过禁用生产者的重试并在处理一批消息之前提交其偏移量来实现至多一次交付。Exactly-once 交付需要与目标存储系统合作,但 Kafka 提供了偏移量,这使得实现这一点很简单。

我见过的大多数对话都不是关于至少一次的保证,而是如何从那里到最多一次或恰好一次。