RabbitMQ 点对点或发布-订阅

标签 rabbitmq jms

RabbitMQ 是点对点还是发布-订阅?或者两者都取决于配置选项?

我一直在查看配置,它们似乎都支持点对点模型而不是发布-订阅。即消息一旦被消费就会从队列中删除,并且不可用于第二个消费者。

最佳答案

从概念上讲,RabbitMQ 既是:点对点,又是发布-订阅。您可以将监听器应用程序注册到 RabbitMQ 交换的主题并接收发布到该主题的所有消息。所以这显然是“发布-订阅”。无论您想要什么应用程序架构,都可以使用发布-订阅概念来实现它。

但是,就像 IBM MQ 一样,RabbitMQ 最初是一个“排队系统”(注意 MQ)。因此,为了实现 pub-sub,他们只是在排队系统之上构建了 pub-sub。这可行,但在配置方面可能会感觉有点奇怪(例如,为什么你需要设置一个交换),并且可能不如在其 DNA 中以 pub-sub 开头的消息传递系统那么高效。

如果您只想使用发布-订阅并拥有数百个消费者,可能有更好的选择,也许使用 UDP 多播来分发数据的消息传递系统。

关于RabbitMQ 点对点或发布-订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55820119/

相关文章:

如果 RabbitMQ 关闭,Spring Integration RabbitMQ ConnectionFactory 会优雅地停止重试

api - 使用 http api 发布到默认的 rabbitmq exchange

rabbitmq - 当 RabbitMQ 传递标签溢出时会发生什么?

docker - docker/微服务中的 RabbitMQ 监听器

queue - 替换 jms 队列中的消息

Java - 如何在 SpringCloud 和 RabbitMQ 中从单个发布者处进行多个订阅

java - 如何配置JBoss/JMS消息速率限制/流量控制

java应用程序架构数据交换

java - 持久化实体不可序列化

java - 在 weblogic 中的 ejb 3 处使用远程接口(interface)进行 RMI 调用