如何清理(删除)rabbitmq 队列中的消息?
我使用的是 Ubuntu 14.04 和 rabbitmq-server 3.2.4-1
例子:
# rabbitmqctl list_queues -p openstack
Listing queues ...
...
notifications.info 372
...
答案1
例如:
sudo apt-get install amqp-tools
amqp-delete-queue -q name_from_queue
在此链接中您可以有更多选项: https://stackoverflow.com/questions/5313027/rabbitmq-how-do-i-delete-all-messages-from-a-single-queue
答案2
有没有办法在不删除队列的情况下清理队列?
是的,这叫做清除队列,并且有很多方法可以做到这一点。
这是因为除了可以使用指向rabbitmqadmin
代理的工具执行的操作之外,它还是一种可直接从协议访问的操作。因此,人们可以使用queue.purge
C++ 和 Python 等多种语言编写并执行队列名称和方法的工具。
Ubuntu amqp-utils 包这类工具有点少,但你不需要费力就能找到类似的东西Doug Barth 的 amqp-utils 工具集用 Ruby 编写并包含一个amqp-purge
实用程序。
语法rabbitmqadmin
是:
rabbitmqadmin 清除队列队列名称
进一步阅读
queue.purge
。AMQP 0-9-1 快速参考. Pivotal 软件。2015 年。rabbitmqadmin
. Pivotal 软件。2015 年。- 迪克·布劳尔(2012-08-23)。 清除 AMQP 队列。
答案3
如果这是 Rabbit 的常见操作,那么我们应该在 juju charm 中添加一个操作,这样就可以轻松地远程调用它,而无需登录系统。Juju 还会确保在系统上没有其他事情发生时完成此操作(显然是从操作/部署角度来看)。