Ich habe rabbitmqadmin
alle Börsen und Warteschlangen installiert und konnte sie auflisten. Wie kann ich alle Warteschlangen verwenden rabbitmqadmin
oder rabbitmqctl
löschen?
rabbitmq
rabbitmqctl
Cory
quelle
quelle
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'
oder so.Mit können
rabbitmqadmin
Sie sie mit diesem Einzeiler entfernen:quelle
egrep
, sodass mein Befehl folgendermaßen aussieht:rabbitmqadmin -f tsv -q list queues name | egrep "%search word%" | while read queue; do rabbitmqadmin -q delete queue name=${queue}; done
Eigentlich super einfach mit Management Plugin und Richtlinien:
Goto Management Console (localhost: 15672)
Gehe zu Admin Registerkarte
Goto Richtlinien Registerkarte (auf der rechten Seite)
Richtlinie hinzufügen
Felder füllen
sparen
quelle
Versuche dies:
quelle
*** Not found: /api/queues/%2F/name
weil die Ausgabe eine ASCII-Tabelle mit einer Spalte "Name" ist. Ich habe den Befehl so angepasst, dassrabbitmqadmin list queues name | awk '!/--|name/ {print $2}' | xargs -I qn rabbitmqadmin delete queue name=qn
er behoben wird.rabbitmqadmin list queues name | awk {'print$2'} | egrep [^name] | xargs -I qname rabbitmqadmin delete queue name=qname
Wenn Sie rabbitmqadmin nicht installiert haben, versuchen Sie, Warteschlangen mit rabbitmqctl zu löschen:
rabbitmqctl list_queues | awk '{ print $1 }' | xargs -L1 rabbitmqctl purge_queue
quelle
delete_queue
nochpurge_queue
Befehle inrabbitmqctl
. Ich möchte viele Warteschlangenrabbitmqadmin
rabbitmqctl purge_queue
arbeitete hier manuell. Ich musste nur -p <virtual-host> hinzufügendelete_queue
undpurge_queue
in verfügbarrabbitmqctl
und ich habe sie gerade erfolgreich ausgeführt. Vielleicht bist du auf einer alten Version.Ich habe eine deleteRabbitMqQs.sh erstellt, die Argumente zum Durchsuchen der Warteschlangenliste akzeptiert und nur diejenigen auswählt, die dem gewünschten Muster entsprechen. Wenn Sie keine Argumente angeben, werden alle gelöscht! Es zeigt Ihnen die Liste der Warteschlangen, die gelöscht werden sollen, und lässt Sie beenden, bevor Sie etwas Destruktives tun.
Wenn Sie eine andere Übereinstimmung mit den übergebenen Argumenten wünschen, können Sie den grep in Zeile vier ändern. Beim Löschen aller Warteschlangen werden keine mit drei aufeinander folgenden Leerzeichen gelöscht, da ich davon ausgegangen bin, dass Eventualitäten seltener sind als bei Personen, bei denen rabbitmqctl die Ausgabe in verschiedenen Sprachen druckt.
Genießen!
quelle
Wenn Sie versuchen, Warteschlangen zu löschen, weil sie nicht verwendet werden und nicht zurückgesetzt werden sollen, können Sie die TTL der Warteschlange über eine Richtlinie sehr niedrig einstellen und warten, bis die Warteschlangen automatisch gelöscht werden, sobald die TTL übergeben wurde und entfernen Sie dann die Richtlinie ( https://www.rabbitmq.com/ttl.html ).
So entfernen Sie die Richtlinie
Beachten Sie, dass dies nur für nicht verwendete funktioniert Warteschlangen
Originalinformationen hier: http://rabbitmq.1065348.n5.nabble.com/Deleting-all-queues-in-rabbitmq-td30933.html
quelle
In Rabbit Version 3.7.10 können Sie den folgenden Befehl mit Root-Berechtigung ausführen:
quelle
Hier ist eine Möglichkeit, dies mit PowerShell zu tun. Die URL muss möglicherweise aktualisiert werden
quelle
Sie können rabbitmqctl eval wie folgt verwenden:
Mit dem obigen Befehl werden alle leeren Warteschlangen in allen vhosts gelöscht, deren Name mit "Präfix-" beginnt. Sie können die Variablen IfUnused, IfEmpty und MatchRegex gemäß Ihren Anforderungen bearbeiten.
quelle
rabbitmqadmin
nicht zugänglich ist.Entfernen aller Warteschlangen mit rabbitmqctl one liner
quelle
Falls Sie nur die Warteschlangen löschen möchten, die nicht leer sind (viel schneller):
Für mich dauert das Löschen einer Warteschlange (sowohl leere als auch nicht leere) 2-3 Sekunden. Das Durchlaufen von 50 Warteschlangen ist also ein Problem, während ich nur 10 davon löschen muss (40/50 sind leer).
quelle
Ich habe rabbitmqctl ausprobiert und Befehle zurückgesetzt, aber sie sind sehr langsam.
Dies ist der schnellste Weg, den ich gefunden habe (ersetzen Sie Ihren Benutzernamen und Ihr Passwort):
Hinweis: Dies funktioniert nur mit dem Standard-vhost /
quelle
Um Warteschlangen aufzulisten,
So löschen Sie eine Warteschlange:
quelle
Hier ist eine schnellere Version (mit
parallel
install sudo apt-get install parallel), die die hervorragende Antwort von @admenva erweitertparallel -j 50 rabbitmqadmin -H YOUR_HOST_OR_LOCALHOST -q delete queue name={} ::: $(rabbitmqadmin -H YOUR_HOST_OR_LOCALHOST -f tsv -q list queues name)
quelle
Dieser Befehl löscht alle Ihre Warteschlangen
Dieses Skript ist sehr einfach, da es verwendet
-f bash
und die Warteschlangen als Liste ausgibt.Dann
xargs -n1
teilen wir das in mehrere Variablen aufDann verwenden wir das
xargs -I{}
, um den folgenden Befehl auszuführen und{}
im Befehl zu ersetzen .quelle
http://yourhost:15672/cli/
es herunterladen.Sie müssen den rabbitmq-Server nicht zurücksetzen, um nicht dauerhafte Warteschlangen zu löschen . Stoppen Sie einfach den Server und starten Sie ihn erneut. Dadurch werden alle nicht dauerhaften Warteschlangen entfernt.
quelle
Für diejenigen, die ein Problem mit der Installation von rabbitmqadmin haben, sollten Sie zuerst Python installieren.
Benutzer eines UNIX-ähnlichen Betriebssystems müssen rabbitmqadmin in ein Verzeichnis in PATH kopieren, z. B. / usr / local / bin.
Windows-Benutzer müssen sicherstellen, dass Python in ihrem Pfad angegeben ist, und rabbitmqadmin als python.exe rabbitmqadmin aufrufen.
Dann
http://{hostname}:15672/cli/rabbitmqadmin
Zum Herunterladen .Warteschlangen auflisten
python rabbitmqadmin list queues
.Warteschlange löschen
python rabbitmqadmin delete queue name=Name_of_queue
Alle Warteschlangen löschen
1- Richtlinie deklarieren
2- Entfernen Sie die Richtlinie
quelle
Es gibt eine Möglichkeit, alle Warteschlangen und Austausche ohne Skripte und vollständiges Zurücksetzen zu entfernen. Sie können einen virtuellen Host einfach über die Administrationsoberfläche löschen und neu erstellen. Dies funktioniert auch für vhost
/
.Sie müssen lediglich die Berechtigungen für den neu erstellten vhost wiederherstellen.
quelle
Okay, wichtiges Qualifikationsmerkmal für diese Antwort: Die Frage verlangt, entweder rabbitmqctl ODER rabbitmqadmin zu verwenden, um dies zu lösen. Meine Antwort musste beide verwenden. Beachten Sie außerdem, dass dies unter MacOS 10.12.6 und den Versionen von rabbitmqctl und rabbitmqadmin getestet wurde , die bei der Installation von rabbitmq mit Homebrew installiert werden und
brew list --versions
als rabbitmq 3.7.0 gekennzeichnet sindrabbitmqctl list_queues -p <VIRTUAL_HOSTNAME> name | sed 1,2d | xargs -I qname rabbitmqadmin --vhost <VIRTUAL_HOSTNAME> delete queue name=qname
quelle
Eine andere Möglichkeit besteht darin, den den Warteschlangen zugeordneten vhost zu löschen. Dadurch wird alles gelöscht, was mit dem vhost verbunden ist. Seien Sie also gewarnt, aber es ist einfach und schnell.
HINWEIS: Das RabbitMQ-Team überwacht die
rabbitmq-users
Mailingliste und beantwortet nur manchmal Fragen zu StackOverflow.quelle
Ich habe die oben genannten Codeteile ausprobiert, aber kein Streaming durchgeführt.
sudo rabbitmqctl list_queues | awk '{print $1}' > queues.txt; for line in $(cat queues.txt); do sudo rabbitmqctl delete_queue "$line"; done
.Ich generiere eine Datei, die alle Warteschlangennamen enthält und diese zeilenweise durchläuft, um sie zu löschen. Für die Schleifen
while read ...
habe ich es nicht getan. Es wurde immer beim ersten Warteschlangennamen angehalten.quelle
quelle