2013-06-12 65 views
3

我期待知道是否可以將消息從一個隊列移動/合併到另一個隊列。 例如:是否可以在RabbitMQ隊列之間移動/合併消息?

main-queue包含消息['cat-1','cat-2','cat-3','cat-4','dog-1','dog-2','cat-5']

dog-queue包含消息['dog-1, dog-2, dog-3, dog-4]

因此問題是,(假設兩個隊列是相同的羣集上,虛擬主機)有可能從dog-queue將郵件移動到main-queue使用rabbitmqctl

所以在最後我期待得到的東西,如:

理想:

main-queue['cat-1','cat-2','cat-3','cat-4','dog-1','dog-2','cat-5', dog-3, dog-4]

不過這也沒關係:

main-queue['cat-1','cat-2','cat-3','cat-4','dog-1','dog-2','cat-5', 'dog-1, dog-2, dog-3, dog-4]

+0

我想你可能需要看看主題交流 – robthewolf

回答

11

你正在尋找什麼是'鏟'插件。鏟子插件內置到核心中,但您必須明確啓用它。它很容易使用,因爲它爲你做了一切(不需要手動消費/重新發布到另一個隊列)。

通過CLI啓用鏟插件:

sudo rabbitmq-plugins enable rabbitmq_shovel 

如果通過GUI管理的RabbitMQ,安裝鏟MGMT插件太:

sudo rabbitmq-plugins enable rabbitmq_shovel_management 

登錄該GUI,你會看到下鏟管理管理員部分。您可以創建鏟子,將消息從任何隊列移動到另一個隊列,即使是遠程託管的隊列。您可以刪除該鏟的時候,它的完成,或者留在和他們進來,它會不斷地移動郵件


如果通過CLI管理RabbitMQ的,您可以直接從rabbitmqctl執行鏟:

sudo rabbitmqctl set_parameter shovel cats-and-dogs \ 
'{"src-uri": "amqp://user:[email protected]/vhost", "src-queue": "dog-queue", \ 
"dest-uri": "amqp://user:[email protected]/vhost", "dest-queue": "main-queue"}' 

官方插件文檔:

鏟插件 - https://www.rabbitmq.com/shovel.html
創建鍬 - https://www.rabbitmq.com/shovel-dynamic.html

+0

非常感謝,太棒了! – Vor

+1

沒錯。我沒有注意到它可能通過鐵鍬。感謝您提供正確答案並對錯誤答案表示歉意。 – pinepain

+1

請注意,您不必在每臺計算機上啓用鏟式插件,即使在某臺遠程計算機上也可以對其進行設置,並且同時具有遠程服務器的源和目標。 – pinepain

相關問題