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

Rabbitmq 如何使用CLI从单个队列中删除所有消息?,rabbitmq,Rabbitmq,如何使用cli从单个队列中删除所有消息? 我有队列名称,我想清理它。是解决此问题的完美工具 rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged 重要提示:这将删除所有用户和配置 警惕 警惕 除非您希望从所有队列(包括用户和配置)中删除数据,否则我不建议您使用此答案。 只要重新设置它 rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app 要清除队列,可以使

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

是解决此问题的完美工具

rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged

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

警惕

警惕

除非您希望从所有队列(包括用户和配置)中删除数据,否则我不建议您使用此答案。 只要重新设置它

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

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


我已成功使用来自的
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

您可以直接运行此命令

sudo rabbitmqctl purge_queue queue_name

RabbitMQ在队列下有两件事

  • 删除
  • 净化
  • 删除-将删除队列


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

    为了仅从队列中删除消息,请使用:

    sudo rabbitmqctl --node <nodename> purge_queue <queue_name>
    
    sudo rabbitmqctl——节点清除队列
    

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

    sudo rabbitmqctl--节点删除\u队列--如果为空
    

    sudo rabbitmqctl--节点删除\u队列--如果未使用
    
    如果您在Docker中使用RabbitMQ,您的步骤应该是:

  • 连接到容器:docker exec-它是您的容器id bash
  • rabbitmqctl清除队列队列队列-1(其中队列-1是队列名称)

  • 我在rabbitmq安装中很难找到该工具。我终于从这里下载了它:如果你已经安装了管理插件,你可以从
    http://rabbitserver:15672/cli/
    这也会重置用户和其他配置!我使用它作为单元测试的一部分。e、 我清除所有内容,然后通过编程设置所有内容,然后填充一些消息,并进行黑盒测试以确保消息通过。在这方面效果很好。:)真是太天真了。作为一个严肃问题的答案,这是不可接受的。它将销毁所有服务器数据。归零存储和重新安装操作系统也可以清除数据;这不是OP要问的问题,这是一个很好的解决方案,因为某些版本没有rabbitmqadmin。这会删除整个队列,而不仅仅是清除它。因此队列不再存在,您必须在之后重新初始化空队列。或者,如果您有虚拟主机,请执行
    rabbitmqctl purge\u queue queue\u name-p my\u virt\u host
    运行sudo rabbitmqctl-h并检查当前rabbitmq列出的cammand列表。如果不存在,则表示当前版本的rabbitmq不支持此功能。这对我不起作用——当我的使用者启动时,队列中仍然充满了任务。根据和,这可能在3.5.4或3.6.0中实现。如果您有一个较旧的版本,rabbitmqadmin(根据)可能会有所帮助……并且在签入时,该功能出现在3.5.4中。这有点吓人。有没有办法防止这种意外发生?例如,生产服务器的配置会禁用此功能以防止意外数据丢失?是的,保护措施是使用“delete_user”命令hi@prajnavantha is pika是否有任何方法仅清除消息来删除用户“guest”?(不是删除队列)这看起来很简单,但这正是我需要的答案。
    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