Mam kilka kolejek uruchomionych z RabbitMQ. Kilka z nich jest teraz bezużytecznych, jak mogę je usunąć? Niestety nie ustawiłem tej auto_delete
opcji.
Jeśli ustawię to teraz, czy zostanie usunięte?
Czy jest sposób, aby teraz usunąć te kolejki?
Jeśli nie dbasz o dane w bazie danych zarządzania; czyli users
, vhosts
, messages
itd., a nie o innych queues
, wtedy można reset
za pomocą poleceń, uruchamiając następujące polecenia w kolejności:
OSTRZEŻENIE: Oprócz kolejek, spowoduje to również usunięcie wszystkich
users
ivhosts
, które skonfigurowałeś na swoim serwerze RabbitMQ; i usunie wszystkie trwałe plikimessages
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
Dokumentacja rabbitmq mówi, że reset
polecenie:
Przywraca węzeł RabbitMQ do stanu pierwotnego.
Usuwa węzeł z dowolnego klastra, do którego należy, usuwa wszystkie dane z bazy danych zarządzania, takie jak skonfigurowani użytkownicy i hosty wirtualne, oraz wszystkie trwałe komunikaty.
Więc uważaj, używając go.
Zainstaluj pakiet pika w następujący sposób
Instalacja zależy od pakietów pip i git-core, być może trzeba będzie je najpierw zainstalować.
W systemie Ubuntu:
W Debianie:
W systemie Windows: Aby zainstalować easy_install, uruchom Instalatora MS Windows dla setuptools
źródło
W wersjach RabbitMQ> 3.0 można również używać interfejsu API HTTP, jeśli włączona jest wtyczka rabbitmq_management. Po prostu pamiętaj, aby ustawić typ zawartości na „application / json” i podać nazwę vhosta i kolejki:
IE Używanie curl z "test" vhosta i nazwą kolejki "testqueue":
źródło
administrator
przeciwnym razie nie będzie mógł używać niektórych części interfejsu API.$ 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
Jednak kolejka nadal pozostaje :( - jakieś pomysły?Jest rabbitmqadmin, który jest przyjemny do pracy z konsoli.
Jeśli zalogujesz się przez ssh / do serwera, na którym masz zainstalowanego królika, możesz go pobrać z:
i zapisz go w / usr / local / bin / rabbitmqadmin
Wtedy możesz biec
Zwykle wymaga sudo.
Jeśli chcesz uniknąć wpisywania nazwy użytkownika i hasła, możesz użyć config
Wszystko to przy założeniu, że masz plik ** /var/lib/rabbitmq/.rabbitmqadmin.conf** i masz gołe minumum
EDYCJA: Od komentarza @ user299709, pomocne może być wskazanie, że użytkownik musi być oznaczony jako „administrator” w króliku. ( https://www.rabbitmq.com/management.html )
źródło
Krótkie podsumowanie dotyczące szybkiego usuwania kolejki ze wszystkimi wartościami domyślnymi z hosta, na którym działa serwer RMQ:
Aby usunąć wszystkie kolejki pasujące do wzorca w danym vhostie (np. Zawierające „amq.gen” w głównym vhostie):
źródło
Twierdzisz, że kolejka istnieje (i tworzysz ją, jeśli tak nie jest) za pomocą queue.declare . Jeśli pierwotnie ustawiłeś automatyczne usuwanie na fałsz, ponowne wywołanie queue.declare z autodelete true spowoduje wystąpienie miękkiego błędu i broker zamknie kanał.
Musisz teraz użyć queue.delete , aby go usunąć.
Więcej informacji znajdziesz w dokumentacji API:
Jeśli używasz innego klienta, musisz znaleźć równoważną metodę. Ponieważ jest częścią protokołu, powinien tam być i prawdopodobnie jest częścią kanału lub jego odpowiednika.
Możesz również zajrzeć do pozostałej części dokumentacji, w szczególności do sekcji Rozpoczęcie pracy, która obejmuje wiele typowych przypadków użycia.
Wreszcie, jeśli masz pytanie i nie możesz znaleźć odpowiedzi gdzie indziej, spróbuj opublikować post na liście mailingowej RabbitMQ Discuss . Deweloperzy starają się odpowiedzieć na wszystkie zadawane tam pytania.
źródło
Inną opcją byłoby włączenie management_plugin i połączenie się z nim przez przeglądarkę. Możesz zobaczyć wszystkie kolejki i informacje o nich. Z poziomu tego interfejsu możliwe i proste jest usuwanie kolejek.
źródło
Metodę JavaScript / jQuery Piotra Stappa uogólniłem nieco dalej, hermetyzując ją w funkcję i nieco uogólniając.
Ta funkcja używa RabbitMQ HTTP API do odpytywania dostępnych kolejek w danym
vhost
, a następnie usuwa je na podstawie opcjonalnegoqueuePrefix
:Po wklejeniu tej funkcji w konsoli JavaScript przeglądarki na stronie zarządzania RabbitMQ możesz jej używać w następujący sposób:
Usuń wszystkie kolejki w „/” vhost
Usuń wszystkie kolejki w „/” vhost zaczynające się od „test”
Usuń wszystkie kolejki w „dev” vhost zaczynające się od „foo”
Używaj tego na własne ryzyko!
źródło
Wtyczka zarządzająca (interfejs sieciowy) udostępnia łącze do skryptu w języku Python. Możesz go użyć do usuwania kolejek. Użyłem tego wzorca do usunięcia wielu kolejek:
źródło
Używam tego aliasu w
.profile
:gdzie
qclean.py
ma następujący kod:Zasadniczo jest to iteracyjna wersja kodu Shwety B. Patil.
źródło
zainstalować
i przejdź do http: // localhost: 15672 / # / queues, jeśli używasz localhost. domyślne hasło będzie
username: guest
,password: guest
i przejdź do zakładki kolejek i usunąć kolejkę.źródło
Miejmy nadzieję, że może to komuś pomóc.
Wypróbowałem powyższe fragmenty kodu, ale nie wykonałem żadnego przesyłania strumieniowego.
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 przechodzę przez niego wiersz po wierszu, aby je usunąć. W przypadku pętli
while read ...
nie zrobiłem tego za mnie. Zawsze zatrzymywał się na pierwszej nazwie kolejki.Ponadto, jeśli chcesz usunąć pojedynczą kolejkę, powyższe rozwiązania pomogą (python, Java ...), a także
do sudo rabbitmqctl delete_queue queue_name
. Używamrabbitmqctl
zamiastrabbitmqadmin
.źródło
Po zainstalowaniu wtyczki rabbitmq_management możesz uruchomić to, aby usunąć wszystkie niechciane kolejki:
Złóżmy polecenie:
rabbitmqctl list_queues -p vhost_name
wyświetli listę wszystkich kolejek i liczbę aktualnie wykonanych zadań.grep -v "fast\|medium\|slow"
przefiltruje kolejki, których nie chcesz usunąć, powiedzmy, że chcemy usunąć każdą kolejkę bez słów szybko , średnio lub wolno .tr "[:blank:]" " "
znormalizuje ogranicznik w rabbitmqctl między nazwą kolejki a liczbą zadańcut -d " " -f 1
podzieli każdą linię białymi znakami i wybierze pierwszą kolumnę (nazwę kolejki)xargs -I {} curl -i -u guest:guest -H "content-type:application/json" -XDELETE http://localhost:15672/api/queues/<vhost>/{}
odbierze nazwę kolejki i ustawi ją w miejscu, w którym ustawimy{}
znak, usuwając wszystkie kolejki niefiltrowane w procesie.Upewnij się, że użyty użytkownik ma uprawnienia administratora.
źródło
Zrobiłem to inaczej, bo miałem tylko dostęp do strony zarządzania. Stworzyłem prosty "fragment", który usuwa kolejki w Javascript. Oto ona:
Wszystkie moje kolejki były w formacie: od PREFIX_0001 do PREFIX_0XXX
źródło
Miałem trudności ze znalezieniem odpowiedzi, która odpowiadałaby moim potrzebom, czyli ręcznego usunięcia kolejki w rabbigmq. Dlatego myślę, że warto wspomnieć w tym wątku, że można usunąć pojedynczą kolejkę bez
rabbitmqadmin
użycia następującego polecenia:źródło