RabbitMQ是点对点还是发布订阅?还是两者都有,取决于配置选项?我一直在看配置,他们似乎都支持点对点模型,而不是发布-订阅。即,消息一旦被消费就从队列中移除,并且对于第二消费者不可用。
pxiryf3j1#
从概念上讲,RabbitMQ是:点到点以及pub-sub。您可以将侦听器应用程序注册到RabbitMQ交换的主题,并接收发布到该主题的所有消息。这显然是一个“pub-sub”。无论您想到的是什么应用程序架构,都可以使用发布-订阅概念来实现它。然而,就像IBM MQ一样,RabbitMQ最初也是一个“排队系统”(注意MQ)。所以为了实现发布-订阅,他们简单地在排队系统上构建了发布-订阅。这是可行的,但在配置方面可能会感觉有点奇怪(例如,为什么你需要设置一个交换机),并且可能不如在其DNA中以pub-sub开始的消息传递系统那么有效。如果您只想使用发布-订阅,并且有数百个消费者,那么可能有更好的选择,也许是使用UDP多播来分发数据的消息传递系统。
kadbb4592#
如果你想使用RabbitMQ作为pub-sub,即因此,该消息不会被第一消费者移除,并且可以被许多订户消费。你会如何计算RabbitMQ?使用fanout交换。每个消费者声明自己的独占队列,绑定到该交换。当消息发布到交换机时,它将路由到绑定到它的所有队列。请阅读RabbitMQ文档和教程,其中解释了所有这些概念。
2条答案
按热度按时间pxiryf3j1#
从概念上讲,RabbitMQ是:点到点以及pub-sub。您可以将侦听器应用程序注册到RabbitMQ交换的主题,并接收发布到该主题的所有消息。这显然是一个“pub-sub”。无论您想到的是什么应用程序架构,都可以使用发布-订阅概念来实现它。
然而,就像IBM MQ一样,RabbitMQ最初也是一个“排队系统”(注意MQ)。所以为了实现发布-订阅,他们简单地在排队系统上构建了发布-订阅。这是可行的,但在配置方面可能会感觉有点奇怪(例如,为什么你需要设置一个交换机),并且可能不如在其DNA中以pub-sub开始的消息传递系统那么有效。
如果您只想使用发布-订阅,并且有数百个消费者,那么可能有更好的选择,也许是使用UDP多播来分发数据的消息传递系统。
kadbb4592#
如果你想使用RabbitMQ作为pub-sub,即因此,该消息不会被第一消费者移除,并且可以被许多订户消费。你会如何计算RabbitMQ?
使用fanout交换。每个消费者声明自己的独占队列,绑定到该交换。当消息发布到交换机时,它将路由到绑定到它的所有队列。
请阅读RabbitMQ文档和教程,其中解释了所有这些概念。