2016-07-28 215 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路由密鑰的消息發送到備用交換機。

備用交換機然後將所有消息路由到傳統隊列。