如何从单个队列中删除所有消息

时间:2011-03-15 14:13:35

标签: rabbitmq

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

10 个答案:

答案 0 :(得分:128)

你可以直接运行这个命令

sudo rabbitmqctl purge_queue queue_name

答案 1 :(得分:103)

rabbitmqadmin是此

的完美工具
rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged

答案 2 :(得分:16)

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

答案 3 :(得分:12)

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

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

答案 4 :(得分:9)

重要说明:这将删除所有用户和配置。

警告!!

警告!!

除非你想要删除所有队列中的数据,包括用户和配置,否则我不会建议这个答案。 只是重置它!!!

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

答案 5 :(得分:7)

RabbitMQ队列中有2件东西

  1. 删除
  2. 清除

删除-将删除队列

清除-这将清空队列(意味着从队列中删除消息,但队列仍然存在)

答案 6 :(得分:5)

我猜它已经晚了但是对于其他人的参考,这可以用pika来完成

header("Location: " . $url);

答案 7 :(得分:2)

我已成功使用amqp-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

答案 8 :(得分:1)

要从队列中仅删除邮件,请使用:

sudo rabbitmqctl --node <nodename> purge_queue <queue_name>

为了删除一个空(-if-empty )或没有使用者(-if-unused )的队列 )使用:

sudo rabbitmqctl --node <nodename> delete_queue <queue_name> --if-empty

sudo rabbitmqctl --node <nodename> delete_queue <queue_name> --if-unused 

答案 9 :(得分:0)

如果您在 Docker 中使用 RabbitMQ,您的步骤应该是:

  1. 连接到容器:docker exec -it your_container_id bash
  2. rabbitmqctl purge_queue Queue-1(其中 Queue-1 是队列名称)