在讨论卡夫卡和RabbitMQ的区别时,“哑巴经纪人”和“智能经纪人”在与消费者的互动中不断出现。卡夫卡被描述为有一个愚蠢的经纪人,而RabbitMQ据说有一个聪明的经纪人/愚蠢的消费者模型。
这到底是什么意思?我熟悉卡夫卡的基础知识,并对RabbitMQ有更多的了解。然而,RabbitMQ的哪些功能使经纪人比卡夫卡更聪明呢?
发布于 2018-03-31 02:46:52
这也是一个困扰我一段时间的问题:)这是我到目前为止所理解的……
在RabbitMQ的情况下,代理确保消息被传递给消费者,并且仅当它从需要该消息的所有消费者获得确认时才将其出队。它还跟踪消费者的状态。
Kafka没有记录“消费者阅读了哪些消息”。Kafka代理在固定的持续时间内将所有消息保存在队列中,消费者有责任从队列中读取这些消息。它也没有跟踪消费者状态的开销操作。
你可以在这篇比较RabbitMQ和Kafka的很棒的Pivotal blog文章中了解更多。
发布于 2018-11-11 00:32:12
关于Kafka使用哑巴代理,而Rabbit MQ使用智能代理的要点是决定使用哪个消息传递系统时使用的要点之一。由于RabbitMQ是一个智能代理,因此实现重试的全局startegies要比Kafka简单得多,而且与侦听器无关。
考虑到通过API网关访问的一组微服务,我相信上面这一点,再加上Rabbit MQ的可维护性更好,并且知道通过微服务传递的数据永远不会达到与流数据相同的负载,这使得Rabbit MQ成为比Kafka更好的服务间通信选择
发布于 2019-12-04 00:07:12
哑巴vs智能代理意味着代理可以智能地根据特定条件路由消息。
在RabbitMQ的情况下,生产者将消息发送到交换,而交换将消息路由到队列。在这里,"Exchange“进行路由,这就是他们所说的智能代理。再一次,人们让经纪人变得非常聪明,并最终使用了ESB,这是我们都知道发生了什么,行业正在远离臃肿的ESB。
在Kafka的情况下, broker不路由消息。它由用户创建主题和消费者组,并决定哪些消费者组收听哪个主题。
Smart vs Dumb broker与消息确认无关。对于RabbitMQ,它会跟踪每条消息的状态,以查看它是否是消费者。在Kafka的情况下,它发生了,但不同的是,在分区上使用偏移量,偏移量存储在Kafka本身中(消费者也可以存储)。但两者都提供了功能。
https://stackoverflow.com/questions/45910795
复制相似问题