RabbitMQ-更改exchange的绑定

RabbitMQ-更改exchange的绑定,rabbitmq,Rabbitmq,我正在使用RabbitMq 3.7.16,我有一个要绑定到两个可能队列之一的交换机 我的用例是将exchange绑定到第一个队列并将其切换到第二个队列,然后再将绑定切换回来 我当前的实施 交换类型为direct,两者的路由密钥均为“” 切换绑定时,我执行绑定(第二个队列),然后取消绑定(第一个队列)。 当切换回来时,我会做相反的事情 问题 我有几毫秒的时间将两个队列绑定到exchange,从而接收相同的消息我希望每封邮件都能准确到达一个可能的队列。 用RabbitMQ做这些事情的正确方法是什么?

我正在使用RabbitMq 3.7.16,我有一个要绑定到两个可能队列之一的交换机

我的用例是将exchange绑定到第一个队列并将其切换到第二个队列,然后再将绑定切换回来

我当前的实施

交换类型为direct,两者的路由密钥均为“”

切换绑定时,我执行绑定(第二个队列),然后取消绑定(第一个队列)。 当切换回来时,我会做相反的事情

问题

我有几毫秒的时间将两个队列绑定到exchange,从而接收相同的消息我希望每封邮件都能准确到达一个可能的队列。


用RabbitMQ做这些事情的正确方法是什么?

我的解决方案

有两个交换,一个绑定到第一个队列,另一个绑定到第二个队列。 我为第一个exchange定义了“备用exchange”属性,该属性将转发无法路由到第二个exchange的任何消息

当我希望消息到达第二个队列时,我只需从第一个交换中解除第一个队列的绑定。这会使邮件在exchange中无法发送,从而转发到第二个exchange。当我希望消息再次到达第一个队列时,我会将其绑定起来