2016-07-28 44 views
1

在我的公司,我正在运行一系列在不同的Android设备上运行的测试。Rabbitmq并捕获所有队列

今天测试(即任务)正在一个队列中运行多个工作。

我想将这个单一队列分成多个队列,每个设备一个,以根据我的公司有多少X设备优化测试启动(即,如果我的公司有2个设备,我想在设备上发送测试一个队列中的单个worker与--concurrency = 2,以便我可以在一行中启动最多两个测试)。

我不想在一段时间内全部迁移,所以我正在采取第一步来实现混合版本,我想实现的逻辑如下。

设备一个(有他们两个)和(这只是一个)去排队一个和队列而所有其他的老遗留之一。

enter image description here

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

有一种方法可以做到这一点?

回答

1

您可以用备用交易所(https://www.rabbitmq.com/ae.html),并绑定与路由键

你的设置将有QueueA和等级队列B通过Exchange结合使用表示设备绑定键组合做到这一点。

 
| exchange| binding | queue | 
|---------|----------|--------| 
| my.ex | device.a | QueueA | 
| my.ex | device.b | QueueB | 
当您发布从设备A的消息

,它将有device.a路由键,会去QueueA。

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

备用交换机然后将所有消息路由到传统队列。