rabbitmq - RabbitMQ - 更改交换绑定
问题描述
我正在使用 RabbitMq 3.7.16,并且我有一个想要绑定到两个可能队列之一的交换。
我的用例是将交换绑定到第一个队列并将其切换到第二个队列,然后将绑定切换回来。
我目前的实施
交换是直接类型的,两者的路由键都是“”。
切换绑定时,我执行 Bind(second-queue),然后执行 Unbind(first-queue)。切换回来时,我会做相反的事情。
问题
我有几毫秒的时间,两个队列都绑定到交换器,因此接收到相同的消息。我希望每条消息都能准确到达一个可能的队列。
用 RabbitMQ 做这种事情的正确方法是什么?
解决方案
我的解决方案
有两个交换,一个绑定到第一个队列,另一个绑定到第二个队列。我将“alternate-exchange”属性定义为 first-exchange,它将转发任何无法路由到 second-exchange 的消息。
当我希望消息到达第二队列时,我只需将第一队列与第一交换解除绑定。这使得消息在交换中无法路由,因此转发到第二个交换。当我希望消息再次到达第一个队列时,我将其绑定回来。
推荐阅读
- swift - 如何在 Encodable(Swift) 中添加动态键名和值?
- spring-boot - Spring Boot Oauth2 客户端显示个人资料照片或社交 Facebook 登录图片问题?
- salt-stack - 使用 cmd.run 和 onfail 发送自定义的 salt 事件
- python-3.x - 有没有办法在 sympy 中更改 LaTeX 预览输出大小或字体大小
- laravel - Laravel 在登录前检查用户是否属于某个公司
- javascript - 使用 redux-saga 的 post 请求问题
- c# - 在 HttpWebRequest 调用中获取 400 异常
- google-play - 应用评论在 GooglePlay 控制台中可见,但在 GooglePlay 中不可见
- r - 如何在 R 中应用与 NIS(国家住院患者样本)相关的权重
- java - 如果数据库(oracle)中没有记录结合使用spring jpa的日期列,如何将零显示为计数?