如果没有队列绑定到 RabbitMQ 中的交换,如何 "buffer" 消息?

How to "buffer" messages if no queues yet bound to an exchange in RabbitMQ?

我对 RabbitMQ 很陌生,所以这可能是我所缺少的东西。 我的“问题”是我的这个应用程序将使用 pub/sub 和交换通过 RabbitMQ 发送“事件”。但是,这些事件可能有也可能没有任何消费者,但一旦有消费者,我希望该消费者获得连接之前发生的任何 events/messages 。所以基本上我希望交换“缓冲”所有消息,并且一旦有一个队列绑定到交换(由消费者创建和绑定的队列),交换应该将所有缓冲的消息推送到该队列以供消费者使用然后.. 嗯.. 消耗.

我读过关于“备用交换”的文章,它并不能真正按照我的描述进行操作,据我了解,它所做的只是将所有消息从原始交换转发到备用交换,然后备用交换将将消息发布到其队列以供消费者使用(因此“缓冲”不多)。

是否可以通过简单地配置 RabbitMQ 来实现我的目标?或者是否有任何其他“记录在案”的模式可以实现我的目标?

为了“缓冲”消息,您必须声明一个队列并从交换路由。

不管你有没有消费者,你可以将队列定义为auto-delete=false,即使没有消费者连接,它也会保留它。

您也可以将其设置为 durable=true,这样它将在代理重启后继续存在。