Câu trả lời:
rabbitmqadmin là công cụ hoàn hảo cho việc này
rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged
http://rabbitserver:15672/cli/
bạn có thể trực tiếp chạy lệnh này
sudo rabbitmqctl purge_queue queue_name
rabbitmqctl purge_queue queue_name -p my_virt_host
Để lọc hàng đợi, bạn có thể sử dụng lệnh sau (thêm thông tin trong tài liệu API):
curl -i -u guest:guest -XDELETE http://localhost:15672/api/queues/vhost_name/queue_name/contents
RabbitMQ thực hiện Giao thức xếp hàng tin nhắn nâng cao (AMQP) để bạn có thể sử dụng các công cụ chung cho những thứ như thế này.
Trên Debian / Ubuntu hoặc hệ thống tương tự, hãy:
sudo apt-get install amqp-tools
amqp-delete-queue -q celery # where celery is the name of the queue to delete
RabbitMQ có 2 thứ đang xếp hàng
Xóa - sẽ xóa hàng đợi
Lọc - Điều này sẽ làm trống hàng đợi (có nghĩa là xóa tin nhắn khỏi hàng đợi nhưng hàng đợi vẫn tồn tại)
LƯU Ý QUAN TRỌNG: Điều này sẽ xóa tất cả người dùng và cấu hình.
C !! NG !!
C !! NG !!
Tôi không đề xuất câu trả lời này cho đến khi bạn muốn xóa dữ liệu khỏi tất cả các hàng đợi, bao gồm cả người dùng và cấu hình. Chỉ cần thiết lập lại nó !!!
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
Tôi đoán là muộn nhưng để người khác tham khảo, điều này có thể được thực hiện với 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)
Tôi đã sử dụng thành công ampq-purge
từ amqp-utils để làm điều này:
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
Để chỉ xóa các tin nhắn khỏi hàng đợi, hãy sử dụng:
sudo rabbitmqctl --node <nodename> purge_queue <queue_name>
Để xóa hàng đợi trống ( --if-trống ) hoặc không có người tiêu dùng ( - nếu không sử dụng ), hãy sử dụng:
sudo rabbitmqctl --node <nodename> delete_queue <queue_name> --if-empty
hoặc là
sudo rabbitmqctl --node <nodename> delete_queue <queue_name> --if-unused