Я установил rabbitmqadmin
и смог перечислить все биржи и очереди. Как я могу использовать rabbitmqadmin
или rabbitmqctl
удалить все очереди.
rabbitmq
rabbitmqctl
Кори
источник
источник
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'
нибудь сделать .На самом деле очень просто с плагином управления и политиками:
Консоль управления Goto (localhost: 15672)
Перейти на вкладку администратора
Вкладка Goto Policies (справа)
Добавить политику
Заполнить поля
Сохранить
источник
С
rabbitmqadmin
вы можете удалить их с этим однострочника:источник
egrep
, поэтому моя команда будет выглядеть так:rabbitmqadmin -f tsv -q list queues name | egrep "%search word%" | while read queue; do rabbitmqadmin -q delete queue name=${queue}; done
Попробуй это:
источник
*** Not found: /api/queues/%2F/name
потому что вывод представляет собой таблицу ASCII со столбцом «имя». Я настроил команду,rabbitmqadmin list queues name | awk '!/--|name/ {print $2}' | xargs -I qn rabbitmqadmin delete queue name=qn
чтобы исправить это.rabbitmqadmin list queues name | awk {'print$2'} | egrep [^name] | xargs -I qname rabbitmqadmin delete queue name=qname
Если у вас не установлен rabbitmqadmin, попробуйте очистить очереди с помощью rabbitmqctl:
rabbitmqctl list_queues | awk '{ print $1 }' | xargs -L1 rabbitmqctl purge_queue
источник
delete_queue
ниpurge_queue
командrabbitmqctl
. Я хотел бы очистить множество очередей, которые, похоже,rabbitmqadmin
rabbitmqctl purge_queue
здесь работал вручную. Мне нужно было только добавить -p <virtual-host>delete_queue
иpurge_queue
доступны,rabbitmqctl
и я только что успешно их запустил. Возможно у вас старая версия.В версии Rabbit 3.7.10 вы можете выполнить следующую команду с правами root:
источник
Если вы пытаетесь удалить очереди, потому что они не используются, и вы не хотите сбрасывать, один из вариантов - установить очень низкий TTL очереди с помощью политики, дождитесь автоматического удаления очередей после того, как TTL будет пройден. а затем удалите политику ( https://www.rabbitmq.com/ttl.html ).
Чтобы удалить политику
Обратите внимание, что это работает только для неиспользуемых очередей.
Исходная информация здесь: http://rabbitmq.1065348.n5.nabble.com/Deleting-all-queues-in-rabbitmq-td30933.html
источник
Я сделал deleteRabbitMqQs.sh, который принимает аргументы для поиска в списке очередей, выбирая только те, которые соответствуют желаемому шаблону. Если вы не предложите аргументов, он удалит их все! Он показывает вам список очередей, которые собираются удалить, позволяя вам выйти, прежде чем делать что-нибудь разрушительное.
Если вам нужно различное сопоставление переданных вами аргументов, вы можете изменить grep в четвертой строке. При удалении всех очередей он не удаляет очереди с тремя последовательными пробелами в них, потому что я полагал, что это произойдет реже, чем у людей, у которых rabbitmqctl выводит свои данные на разных языках.
Наслаждайтесь!
источник
Вот способ сделать это с помощью PowerShell. возможно, потребуется обновить URL
источник
Вы можете использовать rabbitmqctl eval, как показано ниже:
Вышеупомянутое приведет к удалению всех пустых очередей во всех vhosts, имена которых начинаются с «prefix-». Вы можете редактировать переменные IfUnused, IfEmpty и MatchRegex в соответствии с вашими требованиями.
источник
rabbitmqadmin
подходит, когда недоступен.Удаление всех очередей с помощью rabbitmqctl one liner
источник
Если вы хотите очистить только непустые очереди (намного быстрее):
Для меня очистка очереди (как пустой, так и непустой) занимает 2-3 секунды, поэтому перебор 50 очередей - такая боль, в то время как мне просто нужно очистить 10 из них (40/50 пусты).
источник
Я пробовал команды rabbitmqctl и reset, но они очень медленные.
Это самый быстрый способ, который я нашел (замените имя пользователя и пароль):
Примечание: это работает только с vhost / по умолчанию.
источник
Чтобы вывести список очередей,
Чтобы удалить очередь,
источник
Вот более быстрая версия (с использованием
parallel
install sudo apt-get install parallel), расширяющая отличный ответ @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)
источник
Эта команда удаляет все ваши очереди
Этот сценарий очень прост, потому что он использует
-f bash
, который выводит очереди в виде списка.Затем мы используем,
xargs -n1
чтобы разделить это на несколько переменныхЗатем мы используем
xargs -I{}
это, чтобы запустить следующую команду и заменить ее{}
в команде.источник
http://yourhost:15672/cli/
и скачать его.Вам не нужен сброс сервер RabbitMQ удалить недлительную очередь. Просто остановите сервер и запустите снова, и он удалит все доступные недолговечные очереди.
источник
Для тех, у кого есть проблема с установкой rabbitmqadmin, вам следует сначала установить python.
Пользователи UNIX-подобных операционных систем должны скопировать rabbitmqadmin в каталог в PATH, например, / usr / local / bin.
Пользователи Windows должны убедиться, что Python находится в их PATH, и вызвать rabbitmqadmin как python.exe rabbitmqadmin.
затем
http://{hostname}:15672/cli/rabbitmqadmin
для загрузки.Чтобы перечислить очереди
python rabbitmqadmin list queues
.Чтобы удалить очередь
python rabbitmqadmin delete queue name=Name_of_queue
Чтобы удалить все очереди
1- Объявить политику
2- Удалить политику
источник
Есть способ убрать все очереди и обмены без скриптов и полного сброса. Вы можете просто удалить и воссоздать виртуальный хост из интерфейса администратора. Это будет работать даже для vhost
/
.Единственное, что вам нужно будет восстановить, это разрешения для вновь созданного виртуального хоста.
источник
Хорошо, важный квалификатор для этого ответа: вопрос действительно требует использования rabbitmqctl ИЛИ rabbitmqadmin для решения этой проблемы, мой ответ должен был использовать оба. Также обратите внимание, что это было протестировано на MacOS 10.12.6 и версиях rabbitmqctl и rabbitmqadmin , которые устанавливаются при установке rabbitmq с Homebrew и идентифицируются
brew list --versions
как rabbitmq 3.7.0rabbitmqctl list_queues -p <VIRTUAL_HOSTNAME> name | sed 1,2d | xargs -I qname rabbitmqadmin --vhost <VIRTUAL_HOSTNAME> delete queue name=qname
источник
Другой вариант - удалить виртуальный хост, связанный с очередями. Это удалит все, что связано с vhost, так что имейте в виду, но это легко и быстро.
ПРИМЕЧАНИЕ: команда RabbitMQ следит за
rabbitmq-users
списком рассылки и лишь иногда отвечает на вопросы о StackOverflow.источник
Я пробовал приведенные выше фрагменты кода, но не выполнял потоковую передачу.
sudo rabbitmqctl list_queues | awk '{print $1}' > queues.txt; for line in $(cat queues.txt); do sudo rabbitmqctl delete_queue "$line"; done
.Я создаю файл, содержащий все имена очередей, и просматриваю его построчно, чтобы удалить их. Для петель,
while read ...
у меня не делал. Он всегда останавливался на первом имени очереди.источник
источник