RabbitMQ – 如何删除单个队列中的所有消息

如何从单个队列中删除所有消息? 我有队列名称,我想清理它。

rabbitmqadmin是完美的工具

rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged 

你可以直接运行这个命令

 sudo rabbitmqctl purge_queue queue_name 

重要提示:这将删除所有用户和configuration。

我不build议这个答案,除非你想删除所有队列中的数据,包括用户和configuration。 只需重置它!

 rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app 

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 

要清除队列,您可以使用以下命令(API文档中的更多信息):

 curl -i -u guest:guest -XDELETE http://localhost:15672/api/queues/vhost_name/queue_name/contents 

我想它晚了,但为了别人的参考,这可以用pika来完成

 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) 

我已经成功地使用ampq-purge -utils的 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