Wenn Sie sich nicht für die Daten in der Verwaltungsdatenbank interessieren; dh users
, vhosts
, messages
usw., und weder über andere queues
, dann können Sie reset
über Kommandozeile , indem Sie die folgenden Befehle in fahrbereitem Zustand:
WARNUNG: Zusätzlich zu den Warteschlangen, werden diese auch entfernen jede users
und vhosts
Sie auf Ihrem RabbitMQ Server konfiguriert haben; und löscht alle persistentenmessages
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
Die rabbitmq-Dokumentation besagt, dass der reset
Befehl:
Bringt einen RabbitMQ-Knoten in seinen ursprünglichen Zustand zurück.
Entfernt den Knoten aus jedem Cluster, zu dem er gehört, entfernt alle Daten aus der Verwaltungsdatenbank, z. B. konfigurierte Benutzer und vhosts, und löscht alle persistenten Nachrichten.
Seien Sie also vorsichtig damit.
Installieren Sie das Pika-Paket wie folgt
Die Installation hängt von Pip- und Git-Core-Paketen ab. Möglicherweise müssen Sie diese zuerst installieren.
Unter Ubuntu:
Auf Debian:
Unter Windows: Um easy_install zu installieren, führen Sie das MS Windows Installer für setuptools aus
quelle
In RabbitMQ-Versionen> 3.0 können Sie die HTTP-API auch verwenden, wenn das Plugin rabbitmq_management aktiviert ist. Stellen Sie einfach sicher, dass der Inhaltstyp auf 'application / json' gesetzt ist, und geben Sie den vhost- und den Warteschlangennamen an:
IE Verwenden von Curl mit einem vhost 'test' und dem Warteschlangennamen 'testqueue':
quelle
administrator
Stellen Sie sicher, dass Ihr Benutzer mit einem Tag versehen ist, da er sonst bestimmte Teile der API nicht verwenden kann.$ curl -i -u 'user:pass' -H "content-type:application/json" -XDELETE 'http://localhost:15672/api/queues/vhostname/name.portal' HTTP/1.1 204 No Content Server: MochiWeb/1.1 WebMachine/1.10.0 (never breaks eye contact) Date: Wed, 30 Jul 2014 11:23:47 GMT Content-Type: application/json Content-Length: 0
Es gibt rabbitmqadmin, das schön ist, von der Konsole aus zu arbeiten.
Wenn Sie sich bei einem Server anmelden, auf dem Rabbit installiert ist, können Sie es herunterladen von:
und speichern Sie es in / usr / local / bin / rabbitmqadmin
Dann kannst du rennen
Normalerweise erfordert es Sudo.
Wenn Sie die Eingabe Ihres Benutzernamens und Kennworts vermeiden möchten, können Sie config verwenden
All dies unter der Annahme, dass Sie die Datei ** /var/lib/rabbitmq/.rabbitmqadmin.conf** haben und nur ein Minimum haben
BEARBEITEN: Ab dem Kommentar von @ user299709 kann es hilfreich sein, darauf hinzuweisen, dass der Benutzer in Kaninchen als "Administrator" gekennzeichnet sein muss. ( https://www.rabbitmq.com/management.html )
quelle
Sie stellen sicher, dass eine Warteschlange vorhanden ist (und erstellen sie, wenn dies nicht der Fall ist), indem Sie queue.declare verwenden . Wenn Sie das automatische Löschen ursprünglich auf false gesetzt haben, führt ein erneuter Aufruf von queue.declare mit autodelete true zu einem weichen Fehler und der Broker schließt den Kanal.
Sie müssen jetzt queue.delete verwenden, um es zu löschen.
Weitere Informationen finden Sie in der API-Dokumentation:
Wenn Sie einen anderen Client verwenden, müssen Sie die entsprechende Methode finden. Da es Teil des Protokolls ist, sollte es dort sein, und es ist wahrscheinlich Teil von Channel oder einem gleichwertigen.
Vielleicht möchten Sie auch einen Blick auf den Rest der Dokumentation werfen , insbesondere auf den Abschnitt " Erste Schritte" , in dem viele häufig verwendete Anwendungsfälle behandelt werden.
Wenn Sie eine Frage haben und die Antwort an keiner anderen Stelle finden, sollten Sie versuchen, sie auf der RabbitMQ Discuss- Mailingliste zu veröffentlichen. Die Entwickler geben ihr Bestes, um alle dort gestellten Fragen zu beantworten.
quelle
Eine kurze Zusammenfassung zum schnellen Löschen der Warteschlange mit allen Standardwerten vom Host, auf dem der RMQ-Server ausgeführt wird:
So löschen Sie alle Warteschlangen, die einem Muster in einem bestimmten vhost entsprechen (z. B. 'amq.gen' im root-vhost):
quelle
Eine andere Möglichkeit wäre, das management_plugin zu aktivieren und über einen Browser eine Verbindung zu ihm herzustellen. Sie können alle Warteschlangen und Informationen dazu anzeigen. Es ist möglich und einfach, Warteschlangen von dieser Schnittstelle zu löschen.
quelle
Ich habe die JavaScript / jQuery-Methode von Piotr Stapp etwas weiter verallgemeinert, sie in eine Funktion eingekapselt und ein wenig verallgemeinert.
Diese Funktion verwendet die RabbitMQ-HTTP-API, um verfügbare Warteschlangen in einem bestimmten Bereich abzufragen
vhost
und sie dann basierend auf einer Option zu löschenqueuePrefix
:Sobald Sie diese Funktion in die JavaScript-Konsole Ihres Browsers eingefügt haben, während Sie sich auf Ihrer RabbitMQ-Verwaltungsseite befinden, können Sie sie folgendermaßen verwenden:
Löschen Sie alle Warteschlangen in '/' vhost
Löschen Sie alle Warteschlangen in '/' vhost, beginnend mit 'test'.
Löschen Sie alle Warteschlangen in 'dev' vhost, beginnend mit 'foo'.
Bitte benutzen Sie dies auf eigenes Risiko!
quelle
Das Management Plugin (Webinterface) gibt Ihnen einen Link zu einem Python-Skript. Sie können damit Warteschlangen löschen. Ich habe dieses Muster verwendet, um viele Warteschlangen zu entfernen:
quelle
Ich benutze diesen Alias in
.profile
:Wo
qclean.py
hat der folgende Code:Im Wesentlichen ist dies eine iterative Version des Codes von Shweta B. Patil.
quelle
Installieren
und gehen Sie zu http: // localhost: 15672 / # / queues, wenn Sie localhost verwenden. das Standardkennwort wird
username: guest
,password: guest
und auf Warteschlangen Registerkarte gehen und die Warteschlange löschen.quelle
Hoffentlich könnte es jemandem helfen.
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 hörte immer beim ersten Warteschlangennamen auf.Wenn Sie eine einzelne Warteschlange löschen möchten, helfen die oben genannten Lösungen (Python, Java ...) und auch
do sudo rabbitmqctl delete_queue queue_name
. Ich benutzerabbitmqctl
stattrabbitmqadmin
.quelle
Wenn das Plugin rabbitmq_management installiert ist, können Sie dies ausführen, um alle unerwünschten Warteschlangen zu löschen:
Lassen Sie uns den Befehl aufschlüsseln:
rabbitmqctl list_queues -p vhost_name
listet alle Warteschlangen auf und wie viele Aufgaben sie aktuell haben.grep -v "fast\|medium\|slow"
filtert die Warteschlangen, die Sie nicht löschen möchten. Nehmen wir an, wir möchten jede Warteschlange ohne die Wörter schnell , mittel oder langsam löschen .tr "[:blank:]" " "
normalisiert das Trennzeichen in rabbitmqctl zwischen dem Namen der Warteschlange und der Anzahl der vorhandenen Aufgabencut -d " " -f 1
wird sich teilen , jede Zeile durch das Leerzeichen und der 1. Spalte (die Warteschlangenname) Wählenxargs -I {} curl -i -u guest:guest -H "content-type:application/json" -XDELETE http://localhost:15672/api/queues/<vhost>/{}
nimmt den Namen der Warteschlange auf und setzt ihn dort ein, wo wir ihn eingestellt haben{}
Zeichen alle Warteschlangen löscht, die dabei nicht gefiltert werden.Stellen Sie sicher, dass der verwendete Benutzer über Administratorrechte verfügt.
quelle
Ich habe es anders gemacht, weil ich nur Zugriff auf die Management-Webseite hatte. Ich habe ein einfaches "Snippet" erstellt, das Warteschlangen in Javascript löscht. Hier ist es:
Alle meine Warteschlangen hatten das Format: PREFIX_0001 bis PREFIX_0XXX
quelle