本章節指導您通過RabbitMQ WebUI頁面或調用API方式刪除隊列。
- 方法一:在WebUI頁面刪除單個隊列:在WebUI頁面的“Queues”頁簽中,刪除單個隊列。
- 方法二:通過Policy批量刪除隊列:新增與待刪除隊列的前綴名稱相同、且隊列過期時間(TTL)為1毫秒的策略,通過此策略實現批量刪除隊列。
- 方法三:調用API刪除單個隊列:在RabbitMQ實例未開啟SSL時,通過調用API刪除單個隊列。
- 方法四:調用API批量刪除隊列:在RabbitMQ實例未開啟SSL時,通過編寫Shell腳本循環調用API執行刪除命令,實現批量刪除隊列。
說明刪除隊列前,請確保隊列中的消息已經全部被消費,否則未消費的消息將和隊列一起被刪除。
方法一:在WebUI頁面刪除單個隊列
步驟 1 登錄RabbitMQ WebUI頁面。
步驟 2 在“Queues”頁簽,單擊需要刪除的隊列名稱,進入隊列詳情頁面。
圖1 隊列列表


步驟 3 單擊“Delete Queue”,刪除單個隊列。
圖2 刪除單個隊列


方法二:通過Policy批量刪除隊列
新增與待刪除隊列的前綴名稱相同、且隊列TTL為1毫秒的策略,通過此策略實現批量刪除隊列。
步驟 1 登錄RabbitMQ WebUI頁面。
步驟 2 在“Admin -> Policies”頁面中,新增一條策略。
圖3 通過Policy批量刪除隊列


- Name:填寫策略名稱。
- Pattern:隊列匹配模式,填寫隊列名稱,會匹配前綴同名的隊列。例如:設置為“.*”時,表示匹配所有隊列。設置為“.*queue-name”時,表示匹配隊列名前綴為queue-name的所有隊列。
- Apply to:選擇“Queues”。
- Priority:可選參數,策略優先級,數字越大,優先級越高。
- Definition:定義TTL,單位為毫秒。填寫“expires”參數,值設置為“1”,表示隊列過期時間為1毫秒。
步驟 3 單擊“Add policy”。
在“Queues”頁簽,查看隊列是否成功刪除。
步驟 4 隊列成功刪除后,在“Admin > Policies”頁面中,在步驟2中新增的策略后,單擊“Clear”,刪除策略。
如果保留此策略,它對后續新建的隊列依然生效,可能會出現誤刪除隊列的情況。
圖4 刪除策略

方法三:調用API刪除單個隊列
在RabbitMQ實例未開啟SSL時,通過調用API刪除單個隊列。
步驟 1 在Linux系統中連接RabbitMQ實例,具體步驟請參考連接未開啟SSL方式的RabbitMQ實例。
步驟 2 執行以下命令刪除單個隊列。
curl -i -XDELETE
//${USERNAME}:${PASSWORD}@${HOST}:${PORT}/api/queues/${VHOST_NAME}/${QUEUE_NAME}
參數說明如下:
- USERNAME:創建實例時設置的用戶名。
- PASSWORD:創建實例時設置的密碼,如果忘記密碼,參考重置實例密碼,重新設置密碼。
- HOST:在實例詳情頁,查看Web界面UI地址。
- PORT:在實例詳情頁,查看Web界面UI端口號。
- VHOST_NAME:Vhost名稱,默認為“/”,在命令中設置為“%2F”。
- QUEUE_NAME:待刪除隊列的名稱。
示例如下:
curl-i -XDELETE //test:Zsxxxdx@192.168.0.241:15672/api/queues/%2F/hello
刪除成功后,回顯如下:
圖5 刪除隊列成功


您還可以在WebUI頁面的“Queues”頁簽,查看隊列是否成功刪除。
方法四:調用API批量刪除隊列
在RabbitMQ實例未開啟SSL時,通過編寫Shell腳本循環調用API執行刪除命令,實現批量刪除隊列。
步驟 1 在Linux系統中連接RabbitMQ實例,具體步驟請參考連接未開啟SSL方式的RabbitMQ實例。
步驟 2 創建“delete_queues.sh”腳本文件。
touch delete_queues.sh
步驟 3 執行以下命令,編輯腳本。
vim delete_queues.sh
將以下內容復制到腳本中,其中USERNAME、PASSWORD、HOST和QUEUES_LIST的值,請根據實際情況修改。
#!/usr/bin/env bash
USERNAME=root
PASSWORD=Zsxxxdx
HOST=192.168.0.241
PORT=15672
VHOST='%2F'
QUEUES_LIST="test1 test2 test3";
for QUEUE_NAME in $QUEUES_LIST :
do
curl -i -XDELETE //$USERNAME:$PASSWORD@$HOST:$PORT/api/queues/$VHOST/$QUEUE_NAME
done
參數說明如下:
- USERNAME:創建實例時設置的用戶名。
- PASSWORD:創建實例時設置的密碼,如果忘記密碼,參考重置實例密碼,重新設置密碼。
- HOST:在實例詳情頁,查看Web界面UI地址。
- PORT:在實例詳情頁,查看Web界面UI端口號。
- VHOST:Vhost名稱,默認為“/”,在命令中設置為“%2F”。
- QUEUES_LIST:待刪除隊列的名稱,隊列名稱之間使用空格隔開。
步驟 4 保存腳本內容。
步驟 5 對腳本進行授權。
chmod 777 delete_queues.sh
步驟 6 執行腳本。
sh delete_queues.sh
刪除成功后,回顯如下:
圖6 批量刪除隊列成功


您還可以在WebUI頁面的“Queues”頁簽,查看隊列是否成功刪除。