如何使用 cli 从单个队列中删除所有消息? 我有队列名称,我想清理它。
Rabbitmqadmin 是完美的工具
rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged
重要提示: 这将删除所有用户和配置。
警报! !
除非您想从所有队列(包括用户和配置)中删除数据,否则我不建议使用这个答案。 只要重新设置它! ! !
rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app
要清除队列,您可以使用以下命令(API doc 中的更多信息) :
curl -i -u guest:guest -XDELETE http://localhost:15672/api/queues/vhost_name/queue_name/contents
我已经成功地使用 Amqp-utils中的 ampq-purge来做到这一点:
ampq-purge
git clone https://github.com/dougbarth/amqp-utils.git cd amqp-utils # extracted from Rakefile echo "source 'https://rubygems.org' gem 'amqp', '~> 0.7.1' gem 'trollop', '~> 1.16.2' gem 'facets', '~> 2.9' gem 'clio', '~> 0.3.0' gem 'json', '~> 1.5' gem 'heredoc_unindent', '~> 1.1.2' gem 'msgpack', '~> 0.4.5'" > Gemfile bundle install --path=$PWD/gems export RUBYLIB=. export GEM_HOME=$PWD/gems/ruby/1.9.1 ruby bin/amqp-purge -v -V /vhost -u user -p queue # paste password at prompt
我想现在已经很晚了,但是对于其他人来说,这可以用鼠兔来完成
import pika host_ip = #host ip channel = pika.BlockingConnection(pika.ConnectionParameters(host_ip, 5672, "/", credentials=pika.PlainCredentials("username","pwd"))).channel() print "deleting queue..", channel.queue_delete(queue=queue_name)
RabbitMQ 实现了高级消息队列协议(AMQP) ,所以你可以使用通用的工具来处理这样的事情。
在 Debian/Ubuntu 或类似的系统上,可以:
sudo apt-get install amqp-tools amqp-delete-queue -q celery # where celery is the name of the queue to delete amqp-declare-queue -d -q celery # where celery is the name of the queue to delete and the "-d" creates a durable/persistent queue
编辑2022: 在示例中添加了 amqp-Declaration-queue
您可以直接运行此命令
sudo rabbitmqctl purge_queue queue_name
RabbitMQ 有两件事情需要处理
删除-将删除队列
Purge-这将清空队列(意味着从队列中删除消息,但队列仍然存在)
为了从队列中使用 只删除邮件:
sudo rabbitmqctl --node <nodename> purge_queue <queue_name>
为了使 删除队列为空(- 如果-空的)或没有消费者(- 如果-不用)使用:
sudo rabbitmqctl --node <nodename> delete_queue <queue_name> --if-empty
或者
sudo rabbitmqctl --node <nodename> delete_queue <queue_name> --if-unused
如果你正在使用 RabbitMQ 和 Docker,你的步骤应该是:
我的 rabbitmqclt是一个没有 purge _ queue 的旧版本,而且我没有安装 rabbitmqadmin。
rabbitmqclt
rabbitmqadmin
我们的应用程序运行在芹菜上,它有这样一个命令:
celery -A <app_name> -Q <queue_name> purge