How do I delete all messages from a single queue using the cli? I have the queue name and I want to clean it.

11 Answers

you can directly run this command

sudo rabbitmqctl purge_queue queue_name 
5

rabbitmqadmin is the perfect tool for this

rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged 
3

RabbitMQ has 2 things under queue

  1. Delete
  2. Purge

Delete - will delete the queue

Purge - This will empty the queue (meaning removes messages from the queue but queue still exists)

1

To purge queue you can use following command (more information in API doc):

curl -i -u guest:guest -XDELETE 
2

RabbitMQ implements the Advanced Message Queuing Protocol (AMQP) so you can use generic tools for stuff like this.

On Debian/Ubuntu or similar system, do:

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 

Edit 2022: Added amqp-declare-queue to the example

3

IMPORTANT NOTE: This will delete all users and config.

ALERT !!

ALERT !!

I don't suggest this answer until unless you want to delete data from all of the queues, including users and configs. Just Reset it !!!

rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app 
3

In order to delete only messages from the queue use :

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

In order to delete a queue which is empty(--if-empty) or has no consumers(--if-unused) use :

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

or

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

I guess its late but for others reference, this can be done with 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) 
1

In case you are using RabbitMQ with Docker your steps should be:

  1. Connect to container: docker exec -it your_container_id bash
  2. rabbitmqctl purge_queue Queue-1 (where Queue-1 is queue name)
1

I have successfully used ampq-purge from amqp-utils to do this:

git clone cd amqp-utils # extracted from Rakefile echo "source ' 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 

My rabbitmqclt was an older version without purge_queue, and I did not have rabbitmqadmin installed.

Our app runs on celery and it has this command that worked:

celery -A <app_name> -Q <queue_name> purge 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.