我安装了rabbitmqadmin,并且能够列出所有的交换机和队列。如何使用rabbitmqadmin或rabbitmqctl删除所有的队列。
当前回答
如果你只想清除不空的队列(更快):
rabbitmqctl list_queues | awk '$2!=0 { print $1 }' | sed 's/Listing//' | xargs -L1 rabbitmqctl purge_queue
对我来说,清除一个队列(空队列和非空队列)需要2-3秒,所以遍历50个队列非常痛苦,而我只需要清除其中的10个队列(40/50是空队列)。
其他回答
使用rabbitmqadmin,你可以用下面的一行程序删除它们:
rabbitmqadmin -f tsv -q list queues name | while read queue; do rabbitmqadmin -q delete queue name=${queue}; done
试试这个:
rabbitmqadmin list queues name | awk '{print $2}' | xargs -I qn rabbitmqadmin delete queue name=qn
如果安装rabbitmqadmin有问题,请先安装python。
类unix操作系统用户需要将rabbitmqadmin复制到PATH中的某个目录,例如/usr/local/bin。
Windows用户将需要确保Python在他们的PATH上,并调用rabbitmqadmin作为Python .exe rabbitmqadmin。
然后
浏览http://{hostname}:15672/cli/rabbitmqadmin进行下载。 进入包含的文件夹,然后以管理员权限运行cmd
列出队列 Python rabbitmqadmin列表队列。
删除队列 python rabbitmqadmin删除队列名称=队列名称
删除所有队列
1-声明政策
python rabbitmqadmin declare policy name='expire_all_policies' pattern=.* definition={\"expires\":1} apply-to=queues
2-删除策略
python rabbitmqadmin delete policy name='expire_all_policies'
rabbitmqadmin list queues|awk 'NR>3{print $4}'|head -n-1|xargs -I qname rabbitmqadmin delete queue name=qname
删除非持久队列不需要重置rabbitmq服务器。只需停止服务器并重新启动,它就会删除所有可用的非持久队列。