我安装了rabbitmqadmin,并且能够列出所有的交换机和队列。如何使用rabbitmqadmin或rabbitmqctl删除所有的队列。


当前回答

实际上管理插件和策略非常简单:

Goto管理控制台(localhost:15672) Goto管理选项卡 Goto Policies选项卡(在右侧) 添加政策 填充字段 虚拟主机:选择 名称:过期所有策略(稍后删除) 模式:. * 适用于:队列 定义:以值1到期(将类型从字符串更改为数字) 保存 签出队列选项卡 必须删除所有队列 不要忘记删除策略!!!!!!。

其他回答

删除非持久队列不需要重置rabbitmq服务器。只需停止服务器并重新启动,它就会删除所有可用的非持久队列。

如果你只想清除不空的队列(更快):

rabbitmqctl list_queues | awk '$2!=0 { print $1 }' | sed 's/Listing//' | xargs -L1 rabbitmqctl purge_queue

对我来说,清除一个队列(空队列和非空队列)需要2-3秒,所以遍历50个队列非常痛苦,而我只需要清除其中的10个队列(40/50是空队列)。

如https://stackoverflow.com/a/52002145/3278855

要实现自动化,可以使用curl:

curl -X PUT --data '{"pattern":".*","apply-to":"all","definition":{"expires":1},"priority":0}' -u guest:guest 'http://localhost:15672/api/policies/%2f/clear' && \
curl -X DELETE -u guest:guest 'http://localhost:15672/api/policies/%2f/clear'

请注意%2f是默认的v主机名(/),guest:guest是登录名:密码

另一个选项是删除与队列关联的vhost。这将删除与vhost关联的所有内容,因此请注意,但这很简单且快速。


注意:RabbitMQ团队会监控RabbitMQ用户的邮件列表,有时只在StackOverflow上回答问题。

该命令删除所有队列

python rabbitmqadmin.py \
  -H YOURHOST -u guest -p guest -f bash list queues | \
xargs -n1 | \
xargs -I{} \
  python rabbitmqadmin.py -H YOURHOST -u guest -p guest delete queue name={}

这个脚本非常简单,因为它使用了-f bash,它以列表的形式输出队列。

然后我们使用xargs -n1将其拆分为多个变量

然后我们使用xargs -I{}来运行下面的命令,并替换命令中的{}。