RabbitMQ 是点对点还是发布-订阅?或者两者都取决于配置选项?
我一直在查看配置,它们似乎都支持点对点模型而不是发布-订阅。即消息一旦被消费就会从队列中删除,并且不可用于第二个消费者。
最佳答案
从概念上讲,RabbitMQ 既是:点对点,又是发布-订阅。您可以将监听器应用程序注册到 RabbitMQ 交换的主题并接收发布到该主题的所有消息。所以这显然是“发布-订阅”。无论您想要什么应用程序架构,都可以使用发布-订阅概念来实现它。
但是,就像 IBM MQ 一样,RabbitMQ 最初是一个“排队系统”(注意 MQ)。因此,为了实现 pub-sub,他们只是在排队系统之上构建了 pub-sub。这可行,但在配置方面可能会感觉有点奇怪(例如,为什么你需要设置一个交换),并且可能不如在其 DNA 中以 pub-sub 开头的消息传递系统那么高效。
如果您只想使用发布-订阅并拥有数百个消费者,可能有更好的选择,也许使用 UDP 多播来分发数据的消息传递系统。
关于RabbitMQ 点对点或发布-订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55820119/