web-dev-qa-db-ja.com

単一のキューからすべてのメッセージを削除する方法

単一のキューからすべてのメッセージを削除するにはどうすればよいですか?キュー名があり、きれいにしたいです。

132
Bick

rabbitmqadmin はこれに最適なツールです

rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged
109
pr4n

このコマンドを直接実行できます

Sudo rabbitmqctl purge_queue queue_name
131
Anurag jain

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
16
benjaoming

キューを削除するには、次のコマンドを使用できます(詳細についてはAPIドキュメントをご覧ください):

curl -i -u guest:guest -XDELETE http://localhost:15672/api/queues/vhost_name/queue_name/contents
13
Olga

RabbitMQには2つのキューがあります

  1. 削除
  2. パージ

削除-キューを削除します

パージ-これはキューを空にします(つまり、キューからメッセージを削除しますが、キューはまだ存在します)

8
Guru Prasad

重要な注意:これにより、すべてのユーザーと設定が削除されます。

警戒 !!

警戒 !!

ユーザーや設定を含むすべてのキューからデータを削除するまで、この答えは提案しません。リセットしてください!!!

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
8
naren

私は遅いと思うが、他の参考のために、これはピカで行うことができます

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)
6
prajnavantha

これを行うために amqp-utilsampq-purgeを使用しました:

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
2
andrewdotn

メッセージのみ削除をキューから使用するには:

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 
0
Ashwani Singh