如何使用CLI从单个队列中删除所有消息?

问题描述 投票:138回答:9

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

rabbitmq
9个回答
112
投票

rabbitmqadmin是完美的工具

rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged

136
投票

您可以直接运行此命令

sudo rabbitmqctl purge_queue queue_name

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

14
投票

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

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

9
投票

RabbitMQ队列中有2件东西

  1. 删除
  2. 清除

删除-将删除队列

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


7
投票

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

ALERT !!

ALERT !!

除非您要从所有队列(包括用户和配置)中删除数据,否则我不建议这个答案。只需重置它!!

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

6
投票

我想它来晚了,但可以供其他参考,可以用皮卡做

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)

2
投票

我已成功使用ampq-purge中的amqp-utils来做到这一点:

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

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 
© www.soinside.com 2019 - 2024. All rights reserved.