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.
rabbitmqadmin est l'outil idéal pour cela
rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged
vous pouvez directement lancer cette commande
Sudo rabbitmqctl purge_queue queue_name
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
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
RabbitMQ a 2 choses en attente
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).
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
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)
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
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