有些時候,我們需要批量的刪除rabbitmq中的隊列,尤其是對於那些客戶端配置了隊列不存在時自動創建,但斷開時不自動刪除的應用來說。
rabbitmqctl並沒有包含直接管理隊列的功能,其提供的vhost粒度有時候過大以至於無法滿足要求。rabbitmqadmin默認是沒有隨安裝自帶的。
在啟用了rabbitmq management plugin之后,可以通過http://IP:15672/cli/下載rabbitmqadmin shell文件,linux/windows都可用curl,如下:
curl http://IP:15672/cli/rabbitmqadmin -o $RABBITMQ_HOME/sbin/rabbitmqadmin
chmod a+x *
此時就可以通過rabbitmqadmin刪除隊列,如下刪除隊列名含trdL字符串的隊列:
rabbitmqadmin list queues name | awk '{print $2}' | grep "trdL" | xargs -I qn rabbitmqadmin delete queue name=qn
注意:rabbitmqadmin使用python作為腳本語言,所以需要確保主機環境安裝了python 2.6以上。具體見http://www.rabbitmq.com/management-cli.html。
還有一種方式是通過policy進行設置隊列1秒鍾后過期,這也是可以的。