J'ai installé rabbitmqadmin
et j'ai pu lister tous les échanges et files d'attente. Comment puis-je utiliser rabbitmqadmin
ou rabbitmqctl
supprimer toutes les files d'attente.
rabbitmq
rabbitmqctl
Cory
la source
la source
rabbitmqctl list_queues name messages messages_ready \ messages_unacknowledged
rabbitmqctl list_queues | grep 0 | awk '{print $1}' | xargs -I qn rabbitmqadmin delete queue name=qn
grep $'\t0'
ou quelque chose.Avec
rabbitmqadmin
vous pouvez les supprimer avec ce one-liner:la source
egrep
, donc ma commande ressemblera à ceci:rabbitmqadmin -f tsv -q list queues name | egrep "%search word%" | while read queue; do rabbitmqadmin -q delete queue name=${queue}; done
En fait, très facile avec le plugin de gestion et les politiques:
Accéder à la console de gestion (localhost: 15672)
Aller à l' onglet Admin
Onglet Aller aux politiques (sur le côté droit)
Ajouter une politique
Remplir les champs
sauver
la source
Essaye ça:
la source
*** Not found: /api/queues/%2F/name
parce que la sortie est une table ASCII avec une colonne "nom". J'ai modifié la commande pour yrabbitmqadmin list queues name | awk '!/--|name/ {print $2}' | xargs -I qn rabbitmqadmin delete queue name=qn
remédier.rabbitmqadmin list queues name | awk {'print$2'} | egrep [^name] | xargs -I qname rabbitmqadmin delete queue name=qname
Si rabbitmqadmin n'est pas installé, essayez de purger les files d'attente avec rabbitmqctl:
rabbitmqctl list_queues | awk '{ print $1 }' | xargs -L1 rabbitmqctl purge_queue
la source
delete_queue
pas depurge_queue
commandes ni dansrabbitmqctl
. Je voudrais purger un grand nombre de files d'attente qui semblent être générées automatiquement et je ne voudrais pas installer un logiciel supplémentaire commerabbitmqadmin
...rabbitmqctl purge_queue
travaillé ici manuellement. Il me suffisait d'ajouter -p <hôte- virtuel>delete_queue
etpurge_queue
sont disponibles dansrabbitmqctl
et je viens de les exécuter avec succès. Peut-être que vous utilisez une ancienne version.Si vous essayez de supprimer des files d'attente parce qu'elles sont inutilisées et que vous ne voulez pas réinitialiser, une option consiste à définir le TTL de la file d'attente très bas via une stratégie, attendez que les files d'attente soient supprimées automatiquement une fois le TTL passé puis supprimez la stratégie ( https://www.rabbitmq.com/ttl.html ).
Pour supprimer la politique
Notez que cela ne fonctionne que pour utilisé files d'attente
Informations originales ici: http://rabbitmq.1065348.n5.nabble.com/Deleting-all-queues-in-rabbitmq-td30933.html
la source
J'ai fait un deleteRabbitMqQs.sh, qui accepte les arguments pour rechercher la liste des files d'attente, en ne sélectionnant que celles qui correspondent au modèle souhaité. Si vous ne proposez aucun argument, il les supprimera tous! Il vous montre la liste des files d'attente qu'il est sur le point de supprimer, vous permettant de quitter avant de faire quoi que ce soit de destructeur.
Si vous voulez une correspondance différente avec les arguments que vous passez, vous pouvez modifier le grep à la ligne quatre. Lors de la suppression de toutes les files d'attente, il ne supprimera pas celles avec trois espaces consécutifs, car j'ai pensé que cette éventualité serait plus rare que les personnes qui ont rabbitmqctl imprimant sa sortie dans différentes langues.
Prendre plaisir!
la source
Dans la version 3.7.10 de Rabbit, vous pouvez exécuter la commande ci-dessous avec l'autorisation root:
la source
Voici un moyen de le faire avec PowerShell. l'URL doit peut-être être mise à jour
la source
Vous pouvez utiliser rabbitmqctl eval comme ci-dessous:
Ce qui précède supprimera toutes les files d'attente vides dans tous les vhosts dont le nom commence par "prefix-". Vous pouvez modifier les variables IfUnused, IfEmpty et MatchRegex selon vos besoins.
la source
rabbitmqadmin
n'est pas accessible.Suppression de toutes les files d'attente à l'aide de rabbitmqctl one liner
la source
Dans le cas où vous souhaitez purger uniquement les files d'attente qui ne sont pas vides (beaucoup plus rapidement):
Pour moi, il faut 2-3 secondes pour purger une file d'attente (vides et non vides), donc parcourir 50 files d'attente est tellement pénible alors que j'ai juste besoin d'en purger 10 (40/50 sont vides).
la source
J'ai essayé rabbitmqctl et réinitialiser les commandes mais elles sont très lentes.
C'est le moyen le plus rapide que j'ai trouvé (remplacez votre nom d'utilisateur et votre mot de passe):
Remarque: cela ne fonctionne qu'avec le vhost /
la source
Pour lister les files d'attente,
Pour supprimer une file d'attente,
la source
Voici une version plus rapide (utilisant
parallel
install sudo apt-get install parallel) développant l'excellente réponse de @admenvaparallel -j 50 rabbitmqadmin -H YOUR_HOST_OR_LOCALHOST -q delete queue name={} ::: $(rabbitmqadmin -H YOUR_HOST_OR_LOCALHOST -f tsv -q list queues name)
la source
Cette commande supprime toutes vos files d'attente
Ce script est super simple car il utilise
-f bash
, qui génère les files d'attente sous forme de liste.Ensuite, nous utilisons
xargs -n1
pour diviser cela en plusieurs variablesEnsuite, nous utilisons
xargs -I{}
qui exécutera la commande suivante et la remplacera{}
dans la commande.la source
http://yourhost:15672/cli/
et le télécharger.Vous n'avez pas besoin de réinitialiser le serveur rabbitmq pour supprimer les files d'attente non durables . Arrêtez simplement le serveur et redémarrez et il supprimera toutes les files d'attente non durables disponibles.
la source
Pour ceux qui ont un problème avec l'installation de rabbitmqadmin, vous devez d'abord installer python.
Les utilisateurs de systèmes d'exploitation de type UNIX doivent copier rabbitmqadmin dans un répertoire de PATH, par exemple / usr / local / bin.
Les utilisateurs Windows devront s'assurer que Python est sur leur PATH et appeler rabbitmqadmin en tant que python.exe rabbitmqadmin.
ensuite
http://{hostname}:15672/cli/rabbitmqadmin
pour télécharger.Pour répertorier les files d'attente
python rabbitmqadmin list queues
.Pour supprimer la file d'attente
python rabbitmqadmin delete queue name=Name_of_queue
Pour supprimer toutes les files d'attente
1- Déclarer la politique
2- Supprimer la politique
la source
Il existe un moyen de supprimer toutes les files d'attente et tous les échanges sans scripts ni réinitialisation complète. Vous pouvez simplement supprimer et recréer un hôte virtuel à partir de l'interface d'administration. Cela fonctionnera même pour vhost
/
.La seule chose que vous aurez besoin de restaurer est les autorisations pour le vhost nouvellement créé.
la source
D'accord, qualificatif important pour cette réponse: la question demande d'utiliser rabbitmqctl OU rabbitmqadmin pour résoudre cela, ma réponse devait utiliser les deux. Notez également que cela a été testé sur MacOS 10.12.6 et les versions du rabbitmqctl et rabbitmqadmin qui sont installés lors de l' installation rabbitmq avec Homebrew et qui est identifié avec
brew list --versions
comme rabbitmq 3.7.0rabbitmqctl list_queues -p <VIRTUAL_HOSTNAME> name | sed 1,2d | xargs -I qname rabbitmqadmin --vhost <VIRTUAL_HOSTNAME> delete queue name=qname
la source
Une autre option consiste à supprimer l'hôte virtuel associé aux files d'attente. Cela supprimera tout ce qui est associé au vhost, alors soyez prévenu, mais c'est facile et rapide.
REMARQUE: l'équipe RabbitMQ surveille la
rabbitmq-users
liste de diffusion et ne répond que parfois aux questions sur StackOverflow.la source
J'ai essayé les morceaux de code ci-dessus mais je n'ai fait aucun streaming.
sudo rabbitmqctl list_queues | awk '{print $1}' > queues.txt; for line in $(cat queues.txt); do sudo rabbitmqctl delete_queue "$line"; done
.Je génère un fichier qui contient tous les noms de files d'attente et les parcourt ligne par ligne pour les supprimer. Pour les boucles,
while read ...
je ne l'ai pas fait pour moi. Il s'arrêtait toujours au premier nom de file d'attente.la source
la source