2012-09-04 52 views
1

我有一個主題交換,我希望將消息分發到羣集的兩個服務器上的兩個隊列,以減少任何特定服務器上的內存壓力。我的消費者週期性地很慢,並且有時會遇到高存儲水印。將消息路由到一個且僅有一個隊列

我試圖解決,這是通過使用中間的直接交流,以及綁定到交換兩個隊列路由消息的方式:

a (topic) -> a1 (direct) -> q1/q2 (bound to routing key "a") 

但消息被路由到兩個隊列,如AMQP打算。任何人有想法?我需要的是一個交換路由到一個且只有一個隊列,即使路由密鑰與許多隊列匹配。我不想更改我的路由鍵,但可以安排。

我發現Selective routing with RabbitMQ,這可能意味着我需要實現我自己的路由邏輯。希望這已經存在於其他地方。

回答

4

您也許可以使用Shovel插件http://www.rabbitmq.com/shovel.html將消息從中間交換機移動到兩個隊列。

如果你設置了兩個鐵鍬,既消耗直接中間交易所上的單個隊列,他們也應該能夠抵抗進入的消息(我假設你不在乎太多,如果兩個收件人隊列不會以嚴格的循環方式獲取傳入消息)。鏟子然後分別發佈到兩個最終隊列中的一個,並且可以通過來自最終用戶的ACK發送。

+0

這是一個非常好的主意!謝謝! –

相關問題