Rabbitmq 和捕获所有队列
Rabbitmq and catch all queue
在我的公司,我在不同的 android 设备上 运行 进行一系列测试 运行。
今天的测试(即任务)运行 在一个有多个工作人员的队列中。
我想将这个单个队列分成多个队列,每个设备一个,以便根据我公司拥有的 X 设备数量优化测试启动(即,如果我的公司有 2 个 A 设备,我想在其上发送测试设备 A 与单个工作人员一起使用 --concurrency=2 排队,以便我可以连续启动最多两个测试)。
我不想一次全部迁移,所以我正在迈出实现混合版本的第一步,我想实现的逻辑如下。
设备A(有两个)和B(只有一个)继续排队A 和队列 B 而所有其他队列在旧的 legacy 中。
我的问题是 legacy 队列。如果我在设备 C 上发送测试,我所做的就是将任务发送到队列 C,因为 catch_all 队列被命名为 legacy 没有收到任务。
我正在寻找一种方式来表达:
"please Rabbitmq use queue legacy if an existing queue name does not match with the device name".
有办法实现吗?
您可以结合使用备用交换 (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
路由键不匹配的消息传递到备用交换。
备用交换然后会将所有消息路由到旧队列。
在我的公司,我在不同的 android 设备上 运行 进行一系列测试 运行。
今天的测试(即任务)运行 在一个有多个工作人员的队列中。
我想将这个单个队列分成多个队列,每个设备一个,以便根据我公司拥有的 X 设备数量优化测试启动(即,如果我的公司有 2 个 A 设备,我想在其上发送测试设备 A 与单个工作人员一起使用 --concurrency=2 排队,以便我可以连续启动最多两个测试)。
我不想一次全部迁移,所以我正在迈出实现混合版本的第一步,我想实现的逻辑如下。
设备A(有两个)和B(只有一个)继续排队A 和队列 B 而所有其他队列在旧的 legacy 中。
我的问题是 legacy 队列。如果我在设备 C 上发送测试,我所做的就是将任务发送到队列 C,因为 catch_all 队列被命名为 legacy 没有收到任务。 我正在寻找一种方式来表达: "please Rabbitmq use queue legacy if an existing queue name does not match with the device name".
有办法实现吗?
您可以结合使用备用交换 (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
路由键不匹配的消息传递到备用交换。
备用交换然后会将所有消息路由到旧队列。