Как удалить все сообщения из одной очереди? У меня есть имя очереди, и я хочу его очистить.
Как удалить все сообщения из одной очереди
Ответ 1
rabbitmqadmin - идеальный инструмент для этого
rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged
Ответ 2
вы можете напрямую запустить эту команду
sudo rabbitmqctl purge_queue queue_name
Ответ 3
RabbitMQ реализует Advanced Message Queuing Protocol (AMQP), поэтому вы можете использовать общие инструменты для таких вещей.
В Debian/Ubuntu или аналогичной системе выполните:
sudo apt-get install amqp-tools
amqp-delete-queue -q celery # where celery is the name of the queue to delete
Ответ 4
Чтобы очистить очередь, вы можете использовать следующую команду (дополнительная информация в документе API):
curl -i -u guest:guest -XDELETE http://localhost:15672/api/queues/vhost_name/queue_name/contents
Ответ 5
ВАЖНОЕ ПРИМЕЧАНИЕ: это удалит всех пользователей и конфигурации.
Предупреждение !!
Предупреждение !!
Я не предлагаю этот ответ до тех пор, пока вы не захотите удалить данные из всех очередей, включая пользователей и конфиги. Просто сбросьте его !!!
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
Ответ 6
RabbitMQ имеет 2 вещи в очереди
- удалять
- чистка
Удалить - удалит очередь
Очистка - это очистит очередь (то есть удалит сообщения из очереди, но очередь все еще существует)
Ответ 7
Я думаю, что его поздно, но для других ссылок, это можно сделать с помощью pika
import pika
host_ip = #host ip
channel = pika.BlockingConnection(pika.ConnectionParameters(host_ip,
5672,
"/",
credentials=pika.PlainCredentials("username","pwd"))).channel()
print "deleting queue..", channel.queue_delete(queue=queue_name)
Ответ 8
Я успешно использовал ampq-purge
из amqp-utils, чтобы сделать это:
git clone https://github.com/dougbarth/amqp-utils.git
cd amqp-utils
# extracted from Rakefile
echo "source 'https://rubygems.org'
gem 'amqp', '~> 0.7.1'
gem 'trollop', '~> 1.16.2'
gem 'facets', '~> 2.9'
gem 'clio', '~> 0.3.0'
gem 'json', '~> 1.5'
gem 'heredoc_unindent', '~> 1.1.2'
gem 'msgpack', '~> 0.4.5'" > Gemfile
bundle install --path=$PWD/gems
export RUBYLIB=.
export GEM_HOME=$PWD/gems/ruby/1.9.1
ruby bin/amqp-purge -v -V /vhost -u user -p queue
# paste password at prompt
Ответ 9
Чтобы удалить только сообщения из очереди, используйте:
sudo rabbitmqctl --node <nodename> purge_queue <queue_name>
Чтобы удалить очередь, которая пуста (- if-empty) или не имеет потребителей (- if-unused), используйте:
sudo rabbitmqctl --node <nodename> delete_queue <queue_name> --if-empty
или
sudo rabbitmqctl --node <nodename> delete_queue <queue_name> --if-unused