web-dev-qa-db-fra.com

Comment puis-je supprimer tous les messages d'une seule file d'attente

Comment puis-je supprimer tous les messages d'une seule file d'attente? J'ai le nom de la file d'attente et je veux le nettoyer.

132
Bick

rabbitmqadmin est l'outil idéal pour cela

rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged
109
pr4n

vous pouvez directement lancer cette commande

Sudo rabbitmqctl purge_queue queue_name
131
Anurag jain

RabbitMQ implémente le protocole AMQP (Advanced Message Queuing Protocol) afin que vous puissiez utiliser des outils génériques pour ce genre de choses.

Sur Debian/Ubuntu ou un système similaire, faites:

Sudo apt-get install amqp-tools
amqp-delete-queue -q celery  # where celery is the name of the queue to delete
16
benjaoming

Pour purger la file d'attente, vous pouvez utiliser la commande suivante (plus d'informations dans la documentation de l'API):

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

RabbitMQ a 2 choses en attente

  1. Effacer
  2. Purge

Supprimer - supprimera la file d'attente

Purge - Ceci videra la file d'attente (ce qui signifie que les messages de la file d'attente seront supprimés mais que la file d'attente existe toujours).

8
Guru Prasad

NOTE IMPORTANTE: Ceci supprimera tous les utilisateurs et la configuration.

ALERTE !!

ALERTE !!

Je ne suggère cette réponse que si vous souhaitez supprimer les données de toutes les files d'attente, y compris les utilisateurs et les configurations. Il suffit de le réinitialiser !!!

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
8
naren

Je suppose que c'est tard, mais pour d'autres, cela peut être fait avec du 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)
6
prajnavantha

J'ai utilisé avec succès ampq-purge de amqp-utils pour le faire:

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
2
andrewdotn

Pour supprimer uniquement les messages de la file d'attente, utilisez:

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

Afin de supprimer une file d'attente qui est vide ( - if-empty ) ou n'a pas de consommateur ( - si-non utilisé ) utilisez:

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

ou

Sudo rabbitmqctl --node <nodename> delete_queue <queue_name> --if-unused 
0
Ashwani Singh