在我的公司,我正在运行在不同Android设备上运行的一系列测试。
今天的测试(即任务)正在一个包含多个工作人员的队列中运行。
我想将这个单个队列分成多个队列,每个设备一个,以便根据我公司有多少个X设备来优化测试启动(即如果我的公司有2个A设备,我想在设备A上发送测试在具有--concurrency = 2的单个worker的队列中,以便我可以连续启动最多两个测试。)
我不想一次全部迁移,所以我迈出了实现混合版本的第一步,而我想实现的逻辑如下:
设备 A (有两个)和 B (它只有一个)进入队列 A 并排队 B ,而旧传统中的所有其他人
。我的问题在于传统队列。如果我在设备C上发送测试,我所做的就是将任务发送到队列 C ,因为catch_all队列名为 legacy ,因此未收到任务。 我正在寻找一种说法: "如果现有队列名称与设备名称不匹配,请Rabbitmq使用队列旧版。
有办法实现这个目标吗?
答案 0 :(得分:1)
您可以使用备用Exchange(https://www.rabbitmq.com/ae.html)和绑定路由键的组合来执行此操作
您的设置会使用代表设备的绑定密钥通过您的交换机绑定QueueA和QueueB。
| exchange| binding | queue | |---------|----------|--------| | my.ex | device.a | QueueA | | my.ex | device.b | QueueB |
当您从设备A发布消息时,它将具有device.a
的路由密钥并将转到QueueA。
现在,对于所有旧设备,您将在交换配置上设置备用交换。这会将与device.a
或device.b
路由密钥不匹配的邮件传递到备用交换机。
备用交换机会将所有消息路由到旧队列。