1

在我的公司中,我正在运行在不同的 android 设备上运行的一系列测试。

如今,测试(即任务)在具有多个工作人员的单个队列中运行。

我想将此单个队列拆分为多个队列,每个设备一个,以便根据我公司拥有多少 X 设备优化测试启动(即,如果我的公司有 2 个 A 设备,我想在队列中的设备 A 上发送测试使用 --concurrency=2 的单个工作人员,以便我可以连续启动最多两个测试)。

我不想一次全部迁移,所以我迈出了实现混合版本的第一步,我想实现的逻辑如下。

设备A(有两个)和B(只有一个)进入队列A和队列B,而所有其他设备都在旧的设备中。

在此处输入图像描述

我的问题是遗留队列。如果我在设备 C 上发送测试,我所做的是将任务发送到队列C,因为 catch_all 队列被命名为legacy任务没有收到。我正在寻找一种说法:“如果现有队列名称与设备名称不匹配,请 Rabbitmq 使用队列遗留”。

有没有办法做到这一点?

4

1 回答 1

1

您可以结合使用备用交换 ( https://www.rabbitmq.com/ae.html ) 以及与路由键的绑定来执行此操作

您的设置将使用代表设备的绑定键通过您的交换绑定 QueueA 和 QueueB。

| 交流| 装订 | 队列 |
|---------|---------|--------|
| 我的.ex | 设备.a | 队列A |
| 我的.ex | 设备.b | 队列B |

当您从设备 A 发布消息时,它将具有路由键device.a并将转到 QueueA。

现在,对于所有旧设备,您将在交换配置上设置备用交换。这会将不匹配device.adevice.b路由密钥不匹配的消息传递到备用交换机。

然后,备用交换机会将所有消息路由到遗留队列。

于 2016-07-28T14:04:09.080 回答