Smart Broker vs. Dumb Broker(Kafka和RabbitMQ)

Sna*_*Tom 7 rabbitmq apache-kafka

在讨论Kafka和RabbitMQ之间的差异时,"哑经纪人"和"智能经纪人"在与消费者的互动中不断涌现.Kafka被描述为拥有一个愚蠢的经纪人,而RabbitMQ被认为拥有一个聪明的经纪人/愚蠢的消费者模型.

这到底是什么意思?我熟悉Kafka的基础知识以及关于RabbitMQ的更多信息.然而,RabbitMQ的哪些特性使得经纪人比Kafka更聪明?

小智 10

这个问题在某个时候也困扰了我:)这是我到目前为止所理解的......

在RabbitMQ的情况下,代理确保将消息传递给消费者,并且只有当消息得到所有需要该消息的消费者的确认时才将其出列.它还跟踪消费者状态.

Kafka没有跟踪"消费者阅读了哪些消息".Kafka代理将所有消息保留在队列中一段固定的时间,消费者有责任从队列中读取消息.它也没有跟踪消费者状态的开销操作.

您可以在这篇比较RabbitMQ和Kafka的精彩Pivotal博客文章中阅读更多相关信息.

  • 这是错误的。卡夫卡确实跟踪消费者状态。不过,它会跟踪偏移量,并且不会出于跟踪目的而检查消息内容。此外,可以禁用“固定持续时间”。 (4认同)

pra*_*ant 5

Kafka 使用哑代理而 Rabbit MQ 使用智能代理的要点是决定使用哪个消息系统时使用的要点之一。由于 RabbitMQ 是一个智能代理,与 Kafka 相比,实现全局重试策略要容易得多,并且与侦听器无关。

给定一组通过 API 网关访问的微服务,我相信上述观点,再加上 Rabbit MQ 更易于维护的优点以及跨微服务传递的数据永远不会达到与流数据相同的负载的知识,使 Rabbit MQ 成为比 Kafka 更好的跨服务通信选择