从概念上讲,RabbitMQ既是点对点,又是发布-订阅。您可以将监听应用程序注册到RabbitMQ交换机的主题并接收所有发布到该主题的消息。因此,这显然是 "发布-订阅"。无论您构思的应用程序架构是什么样子,都可以使用 "发布-订阅" 概念来实现它。但是,就像IBM MQ一样,RabbitMQ最初是作为“排队系统”(请注意MQ)开始的。因此,为了实现“发布-订阅”,他们只是在排队系统之上构建了“发布-订阅”。这种方法确实有效,但在配置方面可能感觉有些奇怪(例如,为什么需要设置交换机),而且可能不如具有“发布-订阅”基因的消息系统高效。如果您只想使用“发布-订阅”并有数百个消费者,则可能存在更好的选择,例如使用UDP组播分发数据的消息系统。
如果你想将RabbitMQ用作发布-订阅,即消息不会被第一个消费者删除,并且可以被多个订阅者使用。你该如何使用RabbitMQ?使用fanout交换器。每个消费者声明自己的独占队列,绑定到该交换器。当消息发布到交换器时,它将路由到与之绑定的所有队列。请阅读RabbitMQ文档和教程,这些概念都有详细解释。 注意: RabbitMQ团队会监控rabbitmq-users 邮件列表,但只会偶尔在StackOverflow上回答问题。