Раздел вопрос-ответ Как очистить очередь RabbitMQ?

Как очистить одну из очередей RabbitMQ?

Как можно очистить очередь через админку? Можно ли очистить очередь RabbitMQ через консоль?

share

3 ответа

Очередь rabbitmq можно очистить через админку.

По умолчанию адмнка rabbitMQ ставится на порту 15672. Подбробнее об установке админки rabbitMQ.

1. Авторизоваться в админке

Вход в админку rabbitMQ

2. Перейти на вкладку Queues и выбрать очередь, которую нужно очистить (удалить).

http://127.0.0.1:15672/#/queues

Очередь выбирается кликом. Если очередей в списке много, воспользуйтесь полем Filter для фильтрации по имени.

Выбираем одну из очередей rabbitMQ для последующей очистки

3. В настройках очереди выберите меню Delete / purge (1). Затем нажмите на кнопку Delete (2).

Всплывёт окно подверждения. Для очистки очереди отвечаем утвердительно.

Очистка очереди RabbitMQ через админку

 

Добавить комментарий
    как минимум 5 символов

    PHP-код для очистки очереди rabbitMQ.

    В цикле, пока очередь не пуста, получаем из очереди сообщения. Для получения очередного сообщения имеется метод consume(). Помечаем сообщения (задачи, таски) как выполненные с помощью метода ack().

    php код примерно такой:

    do {
    	$task = $router->consume();
    
    	if ($task) {
    		$task->ack();
    	}
    }
    while ($task);

    При необходимости делаем проверки имени задачи, параметров и т.д.

     

    Добавить комментарий
      как минимум 5 символов

      Удалить все сообщения из определенной очереди rabbitMQ можно с помощью консоли cli.

      Посмотреть все доступные очереди в списке очередей, точное имя как в rabbitMQ:

      sudo rabbitmqctl list_queues name messages

      В выводе будут имена тасков и их количество в очереди, например:

      $ sudo rabbitmqctl list_queues name messages_ready
      Listing queues ...
      Task_Name_normal	0
      Task_Name2_normal	16
      TaskQueue_OtherTestTask_high	0
      TaskQueue_OtherTestTask_normal	0
      

      Теперь одной из двух команд (purge или delete) к утилите rabbitmqadmin мы можем очистить очередь.

      • rabbitmqadmin purge queue name=Имя_Очереди_Для_Очистки
      • rabbitmqadmin delete queue name=Имя_Очереди_Для_Очистки

      Альтернативой для очистки очереди является "reset". Делать reset не рекомендуется, т.к. при этом сбрасываются абсолютно все настройки на дефолтные, включая созданных пользователей и правки в конфигах:

      rabbitmqctl stop_app
      rabbitmqctl reset
      rabbitmqctl start_app

      Если в rabbitMQ много задач с похожими именами, то можно написать bash-команду, чтобы удалить их:

      sudo rabbitmqctl list_queues | awk '{print $1}' | grep Task_Name_ | xargs -I queue_name sudo rabbitmqadmin delete queue name=queue_name

       

      Добавить комментарий
        как минимум 5 символов

        icon Вход в систему

        зарегистрироваться