ฉันจะลบข้อความทั้งหมดจากคิวเดียวโดยใช้ cli ได้อย่างไร ฉันมีชื่อคิวและฉันต้องการทำความสะอาด
ฉันจะลบข้อความทั้งหมดจากคิวเดียวโดยใช้ cli ได้อย่างไร ฉันมีชื่อคิวและฉันต้องการทำความสะอาด
คำตอบ:
rabbitmqadminเป็นเครื่องมือที่สมบูรณ์แบบสำหรับสิ่งนี้
rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged
http://rabbitserver:15672/cli/
คุณสามารถเรียกใช้คำสั่งนี้ได้โดยตรง
sudo rabbitmqctl purge_queue queue_name
rabbitmqctl purge_queue queue_name -p my_virt_host
ในการล้างคิวคุณสามารถใช้คำสั่งต่อไปนี้ (ข้อมูลเพิ่มเติมใน API doc):
curl -i -u guest:guest -XDELETE http://localhost:15672/api/queues/vhost_name/queue_name/contents
RabbitMQ ใช้โปรโตคอลการจัดคิวข้อความขั้นสูง (AMQP) เพื่อให้คุณสามารถใช้เครื่องมือทั่วไปสำหรับสิ่งต่าง ๆ เช่นนี้
บน Debian / Ubuntu หรือระบบที่คล้ายกันให้ทำ:
sudo apt-get install amqp-tools
amqp-delete-queue -q celery # where celery is the name of the queue to delete
RabbitMQ มี 2 สิ่งภายใต้คิว
ลบ - จะลบคิว
ล้างข้อมูล - สิ่งนี้จะทำให้คิวว่าง (หมายถึงลบข้อความออกจากคิว แต่ยังคงมีคิวอยู่)
หมายเหตุสำคัญ: สิ่งนี้จะลบผู้ใช้ทั้งหมดและกำหนดค่า
ALERT !!
ALERT !!
ฉันไม่แนะนำคำตอบนี้จนกว่าคุณจะต้องการลบข้อมูลออกจากคิวทั้งหมดรวมถึงผู้ใช้และการกำหนดค่า เพิ่งรีเซ็ต !!!
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
ฉันเดาว่ามันจะสาย แต่สำหรับคนอื่นแล้วการอ้างอิงมันสามารถทำได้ด้วย 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)
ฉันใช้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
เพื่อที่จะลบเฉพาะข้อความจากการใช้คิว:
sudo rabbitmqctl --node <nodename> purge_queue <queue_name>
ในการลบคิวที่ว่างเปล่า ( - หากว่างเปล่า ) หรือไม่มีผู้ใช้ ( - ไม่ได้ใช้ ) -:
sudo rabbitmqctl --node <nodename> delete_queue <queue_name> --if-empty
หรือ
sudo rabbitmqctl --node <nodename> delete_queue <queue_name> --if-unused