Zainstalowałem rabbitmqadmin
i mogłem wyświetlić listę wszystkich wymian i kolejek. Jak mogę użyć rabbitmqadmin
lub rabbitmqctl
usunąć wszystkie kolejki.
rabbitmq
rabbitmqctl
Cory
źródło
źródło
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'
coś zrobić .Dzięki
rabbitmqadmin
możesz je usunąć za pomocą tej jednowarstwowej:źródło
egrep
, więc moje polecenie będzie wyglądać następująco:rabbitmqadmin -f tsv -q list queues name | egrep "%search word%" | while read queue; do rabbitmqadmin -q delete queue name=${queue}; done
Właściwie bardzo łatwe dzięki wtyczce do zarządzania i zasadom:
Goto Management Console (localhost: 15672)
Przejdź do karty administratora
Przejdź do zakładki Zasady (po prawej stronie)
Dodaj zasadę
Wypełnij pola
Zapisać
źródło
Spróbuj tego:
źródło
*** Not found: /api/queues/%2F/name
ponieważ wynikiem jest tabela ASCII z kolumną „nazwa”. Poprawiłem polecenie, aby jerabbitmqadmin list queues name | awk '!/--|name/ {print $2}' | xargs -I qn rabbitmqadmin delete queue name=qn
naprawić.rabbitmqadmin list queues name | awk {'print$2'} | egrep [^name] | xargs -I qname rabbitmqadmin delete queue name=qname
Jeśli nie masz zainstalowanego rabbitmqadmin, spróbuj wyczyścić kolejki za pomocą rabbitmqctl:
rabbitmqctl list_queues | awk '{ print $1 }' | xargs -L1 rabbitmqctl purge_queue
źródło
delete_queue
anipurge_queue
poleceńrabbitmqctl
. Chciałbym wyczyścić wiele kolejek, które wydają się być generowane automatycznie i nie chciałbym instalować dodatkowego oprogramowania, takiego jakrabbitmqadmin
...rabbitmqctl purge_queue
pracował tu ręcznie. Musiałem tylko dodać -p <wirtualny host>delete_queue
ipurge_queue
są dostępnerabbitmqctl
, a ja po prostu uruchomić je pomyślnie. Być może korzystasz ze starej wersji.Jeśli próbujesz usunąć kolejki, ponieważ są nieużywane i nie chcesz resetować, jedną z opcji jest ustawienie bardzo niskiego poziomu TTL w kolejce za pomocą zasad, poczekaj, aż kolejki zostaną automatycznie usunięte po przekroczeniu TTL a następnie usuń zasady ( https://www.rabbitmq.com/ttl.html ).
Aby usunąć zasadę
Pamiętaj, że działa to tylko w przypadku nieużywanych kolejek
Oryginalne informacje tutaj: http://rabbitmq.1065348.n5.nabble.com/Deleting-all-queues-in-rabbitmq-td30933.html
źródło
Zrobiłem deleteRabbitMqQs.sh, który akceptuje argumenty do przeszukania listy kolejek, wybierając tylko te pasujące do żądanego wzorca. Jeśli nie podasz żadnych argumentów, usunie je wszystkie! Pokazuje listę kolejek, które ma zamiar usunąć, pozwalając ci wyjść zanim zrobisz coś destrukcyjnego.
Jeśli chcesz inaczej dopasowywać argumenty, które przekazujesz, możesz zmienić grep w czwartym wierszu. Usuwając wszystkie kolejki, nie usunie tych z trzema kolejnymi spacjami, ponieważ doszedłem do wniosku, że ewentualność byłaby rzadsza niż ludzie, którzy wyświetlają wyniki w różnych językach przez program rabbitmqctl.
Cieszyć się!
źródło
W wersji Rabbit 3.7.10 możesz uruchomić poniżej polecenia z uprawnieniami roota:
źródło
Oto sposób, aby to zrobić za pomocą PowerShell. adres URL może wymagać aktualizacji
źródło
Możesz użyć evolmaxmql jak poniżej:
Powyższe spowoduje usunięcie wszystkich pustych kolejek na wszystkich hostach vhost, których nazwa zaczyna się od „prefix-”. Możesz edytować zmienne IfUnused, IfEmpty i MatchRegex zgodnie z wymaganiami.
źródło
rabbitmqadmin
nie jest dostępny.Usuwanie wszystkich kolejek za pomocą jednego linijki rabbitmqctl
źródło
Jeśli chcesz tylko wyczyścić kolejki, które nie są puste (znacznie szybciej):
Dla mnie czyszczenie kolejki (zarówno pustej, jak i niepustej) zajmuje 2-3 sekundy, więc iteracja po 50 kolejkach to taki ból, a ja po prostu muszę wyczyścić 10 z nich (40/50 są puste).
źródło
Próbowałem polecenia rabbitmqctl i resetowania, ale są one bardzo wolne.
Jest to najszybszy sposób, jaki znalazłem (zastąp swoją nazwę użytkownika i hasło):
Uwaga: Działa to tylko z domyślnym vhost /
źródło
Aby wyświetlić kolejki,
Aby usunąć kolejkę,
źródło
Oto szybsza wersja (korzystająca z
parallel
instalacji sudo apt-get install równolegle) rozwijająca się na doskonałej odpowiedzi autorstwa @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)
źródło
To polecenie usuwa wszystkie twoje kolejki
Ten skrypt jest bardzo prosty, ponieważ używa
-f bash
, który wyświetla kolejki jako listę.Następnie używamy
xargs -n1
do podzielenia tego na wiele zmiennychNastępnie użyjemy polecenia
xargs -I{}
, które uruchomi polecenie i zastąpi{}
polecenie.źródło
http://yourhost:15672/cli/
pobrać i pobrać.Nie musisz resetować serwera rabbitmq, aby usunąć nietrwałe kolejki. Po prostu zatrzymaj serwer i uruchom ponownie, a usunie wszystkie dostępne niestabilne kolejki.
źródło
Dla których masz problem z instalacją rabbitmqadmin, powinieneś najpierw zainstalować Pythona.
Użytkownicy systemu operacyjnego podobnego do UNIX-a muszą skopiować rabbitmqadmin do katalogu w PATH, np. / Usr / local / bin.
Użytkownicy systemu Windows będą musieli upewnić się, że Python znajduje się na ich ŚCIEŻCE i wywołać rabbitmqadmin jako python.exe rabbitmqadmin.
Następnie
http://{hostname}:15672/cli/rabbitmqadmin
aby pobrać.Aby wyświetlić kolejki
python rabbitmqadmin list queues
.Aby usunąć kolejkę
python rabbitmqadmin delete queue name=Name_of_queue
Aby usunąć wszystkie kolejki
1- Deklaracja zasad
2- Usuń politykę
źródło
Istnieje sposób na usunięcie wszystkich kolejek i wymian bez skryptów i pełnego resetowania. Możesz po prostu usunąć i ponownie utworzyć wirtualnego hosta z interfejsu administratora. Działa to nawet dla vhosta
/
.Jedyne, co musisz przywrócić, to uprawnienia do nowo utworzonego vhosta.
źródło
OK, ważny kwalifikator dla tej odpowiedzi: Pytanie wymaga użycia albo rabbitmqctl LUB rabbitmqadmin, aby rozwiązać ten problem, moja odpowiedź wymagała użycia obu. Należy również pamiętać, że zostało to przetestowane w systemie MacOS 10.12.6 i wersjach programów rabbitmqctl i rabbitmqadmin, które są instalowane podczas instalowania programu rabbitmq z Homebrew i które są identyfikowane
brew list --versions
jako królikmq 3.7.0rabbitmqctl list_queues -p <VIRTUAL_HOSTNAME> name | sed 1,2d | xargs -I qname rabbitmqadmin --vhost <VIRTUAL_HOSTNAME> delete queue name=qname
źródło
Inną opcją jest usunięcie vhosta związanego z kolejkami. Spowoduje to usunięcie wszystkiego związanego z vhostem, więc ostrzegaj, ale jest to łatwe i szybkie.
UWAGA: zespół RabbitMQ monitoruje na
rabbitmq-users
listę mailingową i tylko czasami odpowiada na pytania na StackOverflow.źródło
Próbowałem powyższych fragmentów kodu, ale nie przesyłałem strumieniowo.
sudo rabbitmqctl list_queues | awk '{print $1}' > queues.txt; for line in $(cat queues.txt); do sudo rabbitmqctl delete_queue "$line"; done
.Generuję plik, który zawiera wszystkie nazwy kolejek i pętle przez linię do linii, aby je usunąć. W przypadku pętli
while read ...
nie zrobiłem tego dla mnie. Zawsze zatrzymywało się przy pierwszej nazwie kolejki.źródło
źródło