У меня есть несколько очередей с RabbitMQ. Некоторые из них сейчас бесполезны, как их удалить? К сожалению, я не выбрал auto_delete
опцию.
Если я установлю сейчас, он будет удален?
Есть ли способ удалить эти очереди сейчас?
Если вам не важны данные в базе данных управления; то есть users
, vhosts
и messages
т. д., и ни о чем другом queues
, то вы можете reset
через командную строку, выполнив следующие команды по порядку:
ВНИМАНИЕ: В дополнение к очередям, это также удалит все
users
иvhosts
, которые вы настроили на своем сервере RabbitMQ; и удалит все постоянныеmessages
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
В документации rabbitmq говорится, что reset
команда:
Возвращает узел RabbitMQ в исходное состояние.
Удаляет узел из любого кластера, к которому он принадлежит, удаляет все данные из базы данных управления, такие как настроенные пользователи и vhosts, и удаляет все постоянные сообщения.
Так что будьте осторожны при его использовании.
Установите пакет pika следующим образом
Установка зависит от пакетов pip и git-core, вам может потребоваться сначала установить их.
В Ubuntu:
В Debian:
В Windows: чтобы установить easy_install, запустите установщик MS Windows для инструментов установки.
источник
В версиях RabbitMQ> 3.0 вы также можете использовать HTTP API, если включен плагин rabbitmq_management. Просто не забудьте установить тип содержимого на 'application / json' и указать имя vhost и очереди:
IE Использование curl с vhost 'test' и именем очереди 'testqueue':
источник
administrator
иначе он не сможет использовать определенные части 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
Однако очередь все еще остается :( - есть идеи?Есть rabbitmqadmin, с которым приятно работать с консоли.
Если вы ssh / авторизуетесь на сервере, на котором установлен кролик, вы можете скачать его с:
и сохраните его в / usr / local / bin / rabbitmqadmin
Тогда ты можешь бежать
Обычно для этого требуется sudo.
Если вы не хотите вводить свое имя пользователя и пароль, вы можете использовать config
Все это в предположении, что у вас есть файл ** /var/lib/rabbitmq/.rabbitmqadmin.conf** и есть минимальный
РЕДАКТИРОВАТЬ: Что касается комментария от @ user299709, может быть полезно указать, что пользователь должен быть помечен как «администратор» в кролике. ( https://www.rabbitmq.com/management.html )
источник
Краткое описание быстрого удаления очереди со всеми значениями по умолчанию с хоста, на котором запущен сервер RMQ:
Чтобы удалить все очереди, соответствующие шаблону в данном виртуальном хосте (например, содержащие 'amq.gen' в корневом виртуальном хосте):
источник
Вы утверждаете, что очередь существует (и создаете ее, если ее нет), используя queue.declare . Если вы изначально установили для автоматического удаления значение false, повторный вызов queue.declare с autodelete true приведет к мягкой ошибке, и брокер закроет канал.
Теперь вам нужно использовать queue.delete , чтобы удалить его.
См. Подробную информацию в документации по API:
Если вы используете другой клиент, вам нужно будет найти эквивалентный метод. Поскольку он является частью протокола, он должен быть там и, вероятно, является частью Channel или его эквивалента.
Вы также можете ознакомиться с остальной документацией, в частности, с разделом «Начало работы », который охватывает множество распространенных вариантов использования.
Наконец, если у вас есть вопрос, и вы не можете найти ответ в другом месте, попробуйте опубликовать его в списке рассылки RabbitMQ Discuss . Разработчики стараются ответить на все вопросы, которые там задаются.
источник
Другой вариант - включить management_plugin и подключиться к нему через браузер. Вы можете видеть все очереди и информацию о них. С помощью этого интерфейса можно и просто удалить очереди.
источник
Я немного обобщил метод JavaScript / jQuery Петра Стаппа, инкапсулируя его в функцию и немного обобщая.
Эта функция использует RabbitMQ HTTP API для запроса доступных очередей в заданном
vhost
и затем удаляет их на основании необязательногоqueuePrefix
:Вставив эту функцию в консоль JavaScript вашего браузера, находясь на странице управления RabbitMQ, вы можете использовать ее следующим образом:
Удалить все очереди в хосте '/'
Удалить все очереди в '/' vhost, начинающиеся с 'test'
Удалить все очереди в виртуальном хосте 'dev', начинающиеся с 'foo'
Пожалуйста, используйте это на свой страх и риск!
источник
Плагин управления (веб-интерфейс) дает вам ссылку на скрипт python. Вы можете использовать его для удаления очередей. Я использовал этот паттерн для удаления множества очередей:
источник
Я использую этот псевдоним в
.profile
:где
qclean.py
есть следующий код:По сути, это итерационная версия кода Свети Б. Патил.
источник
установить
и перейдите по адресу http: // localhost: 15672 / # / queues, если вы используете localhost. пароль по умолчанию будет
username: guest
,password: guest
перейдите на вкладку очередей и удалите очередь.источник
Надеюсь, это может кому-то помочь.
Я пробовал указанные выше фрагменты кода, но не выполнял потоковую передачу.
sudo rabbitmqctl list_queues | awk '{print $1}' > queues.txt; for line in $(cat queues.txt); do sudo rabbitmqctl delete_queue "$line"; done
.Я создаю файл, содержащий все имена очередей, и просматриваю его построчно, чтобы удалить их. Для петель
while read ...
у меня не делал. Он всегда останавливался на первом имени очереди.Кроме того, если вы хотите удалить одну очередь, приведенные выше решения помогут (python, Java ...), а также
do sudo rabbitmqctl delete_queue queue_name
. Я используюrabbitmqctl
вместоrabbitmqadmin
.источник
С установленным плагином rabbitmq_management вы можете запустить его, чтобы удалить все нежелательные очереди:
Давайте разберем команду:
rabbitmqctl list_queues -p vhost_name
перечислит все очереди и сколько задач у них в настоящее время.grep -v "fast\|medium\|slow"
отфильтрует очереди, которые вы не хотите удалять, скажем, мы хотим удалить каждую очередь без слов быстро , средне или медленно .tr "[:blank:]" " "
нормализует разделитель на rabbitmqctl между именем очереди и количеством задач, которые естьcut -d " " -f 1
будет разделить каждую строку на пробел и выберите 1 - й столбец (имя очереди)xargs -I {} curl -i -u guest:guest -H "content-type:application/json" -XDELETE http://localhost:15672/api/queues/<vhost>/{}
подберет имя очереди и установит его там, где мы установили{}
символ, удаляющий все очереди, не отфильтрованные в процессе.Убедитесь, что использованный пользователь имеет права администратора.
источник
Я сделал это по-другому, потому что у меня был доступ только к странице управления. Я создал простой «сниппет», который удаляет очереди в Javascript. Вот:
Все мои очереди были в формате: от PREFIX_0001 до PREFIX_0XXX
источник
Я изо всех сил пытался найти ответ, который соответствовал моим потребностям вручную удалить очередь в rabbigmq. Поэтому я думаю, что в этой теме стоит упомянуть, что можно удалить одну очередь без
rabbitmqadmin
использования следующей команды:источник