RabbitMQ隊列遷移
更新時間 2024-01-18 10:13:40
最近更新時間: 2024-01-18 10:13:40
分享文章
本文主要介紹分布式消息服務RabbitMQ的隊列遷移最佳實踐。
在RabbitMQ集群上,隊列在各個節點分布不均衡會導致部分節點壓力過大,無法更有效的利用集群。這可能是擴容節點、刪除隊列等原因導致的。
設置隊列負載均衡的方法如下:
- 刪除隊列重建
- 通過Policy修改master節點方式
刪除隊列重建
- 登錄RabbitMQ WebUI頁面。
- 在“Overview”頁簽中,單擊“Download broker definitions”,導出元數據。


- 停止生產,等待數據消費完,然后刪除原有隊列。
- 在“Overview”頁簽中,確認數據是否已消費完。


可消費消息數(Ready)和未確認的消息數(Unacked)都為0時,說明消費完成。
- 等數據消費完后,刪除原有隊列。
- 在“Queues”頁簽,單擊需要刪除的隊列名稱,進入隊列詳情頁面。
- 單機“Delete Queue”,刪除隊列。




- 在“Overview”頁簽中,上傳2中導出的元數據。
- 在“Overview”頁簽中,單擊“選擇文件”,選擇2中導出的元數據。
- 單擊“Upload broker definitions”,上傳元數據。


上傳成功后,顯示如下信息。


實例會自動將隊列均衡創建在各個節點上,在“Queues”頁簽中查看隊列分布詳情。
通過Policy修改master節點方式
- 登錄RabbitMQ WebUI頁面。
- 在“Admin > Policies”頁面中,新增一條策略。


- Name:填寫策略名稱。
- Pattern:隊列匹配模式,填寫隊列名稱,會匹配前綴同名的隊列。
- Apply to:選擇“Queues”。
- Priority:可選參數,策略優先級,數字越大,優先級越高。
- Definition:鏡像定義。填寫“ha-mode”和“ha-params”參數。其中“ha-mode”設置為“nodes”,“ha-params”設置為隊列希望遷移到的目的節點名稱。
- 單擊“Add policy”。
說明隊列數據同步需要很長時間,為防止消息丟失,在隊列數據完成同步前,原先的master節點依然生效。
待隊列切換完成后,可刪除2中新增的策略。