मैं CLI का उपयोग करके एक पंक्ति से सभी संदेशों को कैसे हटाऊं?


143

मैं क्लाई का उपयोग करके एक पंक्ति से सभी संदेश कैसे हटा सकता हूं? मेरा कतार नाम है और मैं इसे साफ करना चाहता हूं।

जवाबों:


121

rabbitmqadmin इसके लिए एकदम सही उपकरण है

rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged

5
मुझे अपने खरगोशबिटक इंस्टॉलेशन में टूल ढूंढने में एक कठिन समय मिला। मैंने अंत में इसे यहाँ से डाउनलोड किया: hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v3_3_5/…
FactualHarmony

5
यदि आपके पास प्रबंधन प्लगइन पहले से ही स्थापित है, तो आप इसेhttp://rabbitserver:15672/cli/
morloch

141

आप सीधे इस कमांड को चला सकते हैं

sudo rabbitmqctl purge_queue queue_name

15
या, यदि आपके पास एक वर्चुअल होस्ट है, तोrabbitmqctl purge_queue queue_name -p my_virt_host
बकरी

4
sudo rabbitmqctl -h चलाएं और अपने वर्तमान rabbitmq द्वारा सूचीबद्ध कैममांड की सूची देखें। यदि यह नहीं है, तो इसका मतलब है कि वर्तमान संस्करण rabbitmq इस सुविधा का समर्थन नहीं करता है।
अनुराग जैन

यह मेरे लिए काम नहीं करता था - जैसे ही मेरे उपभोक्ता ने निकाल दिया, कतार अभी भी कार्यों से भरी हुई थी।
जेमी इवानोव

इसे 3.5.4 या 3.6.0 में लागू किया जा सकता है, जो कि github.com/rabbitmq/rabbitmq-server/pull/215 और rabbitmq.com/changelog.html पर आधारित है । यदि आपके पास एक पुराना संस्करण है, तो stackoverflow.com/ के अनुसार rabbitmqadmin.com/a/18267342/272387 मदद कर सकता है।
रिचल्व

1
... और github.com/rabbitmq/rabbitmq-server/releases/tag/… में जाँच कर रहा है , यह विशेषता 3.5.4 में दिखाई दी।
रिचल्व

16

कतार को शुद्ध करने के लिए आप निम्न आदेश (API doc में अधिक जानकारी) का उपयोग कर सकते हैं:

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

डरावना की तरह यह कितना अच्छा काम किया। अनायास हो रहे इस से बचाव का कोई उपाय? ऐसे उत्पादन सर्वर के लिए एक विन्यास के रूप में जो इस कार्यक्षमता को आकस्मिक डेटा हानि को रोकने के लिए अक्षम करता है?
यशायाह

हाँ, सुरक्षा "delete_user" कमांड का उपयोग करके उपयोगकर्ता "अतिथि" को हटाने के लिए होगी
ओशन

16

RabbitMQ उन्नत संदेश कतारबद्ध प्रोटोकॉल (AMQP) को लागू करता है ताकि आप इस तरह से सामान के लिए सामान्य उपकरण का उपयोग कर सकें।

डेबियन / उबंटू या इसी तरह की प्रणाली पर, करें:

sudo apt-get install amqp-tools
amqp-delete-queue -q celery  # where celery is the name of the queue to delete

यह कुछ संस्करण के लिए एक अच्छा समाधान है खरगोशबक्कड़मिन नहीं है।
विस्ज़ो

11
यह पूरी कतार को हटा देता है, बस इसे शुद्ध नहीं करता है। तो कतार अब मौजूद नहीं है और आपको बाद में खाली कतार को फिर से शुरू करना होगा।
क्रोब

13

RabbitMQ में कतार के तहत 2 चीजें हैं

  1. हटाएं
  2. शुद्ध करना

हटाएं - कतार को हटा देगा

पर्ज - यह कतार को खाली कर देगा (मतलब कतार से संदेश हटाता है लेकिन कतार अभी भी मौजूद है)


1
यह सरल लग सकता है, लेकिन यह वह उत्तर था जिसकी मुझे आवश्यकता थी।
निक पिकरिंग

8

महत्वपूर्ण नोट: यह सभी उपयोगकर्ताओं और कॉन्फ़िगर को हटा देगा।

ALERT !!

ALERT !!

जब तक आप सभी कतारों से उपयोगकर्ता और कॉन्फ़िगरेशन सहित डेटा हटाना नहीं चाहते, तब तक मैं इस उत्तर का सुझाव नहीं देता। बस इसे रीसेट करें !!!

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

28
यह भी अपने उपयोगकर्ताओं और अन्य विन्यास रीसेट करता है!
13

मैंने इसे यूनिट परीक्षणों के हिस्से के रूप में इस्तेमाल किया। उदाहरण के लिए, मैंने सबकुछ स्पष्ट कर दिया, फिर इसे ढेर सारे प्रोग्राम के माध्यम से स्टैकओवरफ्लो के माध्यम से सेट किया गया। इस उद्देश्य के लिए महान काम करता है। :)
जेम्स ओर्वेक

3
यह वास्तव में भोला है। यह एक गंभीर प्रश्न के उत्तर के रूप में स्वीकार्य नहीं है। यह सभी सर्वर डेटा को नष्ट कर देगा।
आंद्रे पास्टर

2
अपने भंडारण को शून्य करना और ओएस को फिर से स्थापित करना भी डेटा से छुटकारा दिलाता है; यह वह नहीं है जो ओपी पूछ रहा है
istepaniuk

5

मैं इसके देर से अनुमान लगाता हूं लेकिन अन्य संदर्भों के लिए, यह पिका के साथ किया जा सकता है

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)

1
hi @prajnavantha pika है कोई भी विधि केवल स्पष्ट संदेश है? (नहीं हटाएं कतार)
जेड हान

2

मैंने सफलतापूर्वक ऐसा करने के लिए 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

कतार से केवल संदेशों को हटाने के लिए:

sudo rabbitmqctl --node <nodename> purge_queue <queue_name>

एक कतार हटाने के लिए जो खाली ( -इफ़-खाली ) है या जिसका कोई उपभोक्ता नहीं है ( --if-unused ) उपयोग:

sudo rabbitmqctl --node <nodename> delete_queue <queue_name> --if-empty

या

sudo rabbitmqctl --node <nodename> delete_queue <queue_name> --if-unused 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.