क्या यह संभव है कि कमांड लाइन से सीधे RabbitMQ संदेश सामग्री देखें?


101

क्या यह संभव है कि कमांड लाइन से सीधे RabbitMQ संदेश सामग्री देखें?

sudo rabbitmqctl list_queues कतारों को सूचीबद्ध करता है।

क्या कोई आज्ञा जैसी है sudo rabbitmqctl list_queue_messages <queue_name>?


जवाबों:


106

आपको प्रबंधन प्लगइन को सक्षम करना चाहिए।

rabbitmq-plugins enable rabbitmq_management

यहाँ देखें:

http://www.rabbitmq.com/plugins.html

और यहाँ प्रबंधन की बारीकियों के लिए।

http://www.rabbitmq.com/management.html

अंत में एक बार सेट करने के बाद आपको खरगोशबिटकमिन टूल को स्थापित करने और उपयोग करने के लिए नीचे दिए गए निर्देशों का पालन करना होगा। जिसका उपयोग सिस्टम के साथ पूरी तरह से बातचीत करने के लिए किया जा सकता है। http://www.rabbitmq.com/management-cli.html

उदाहरण के लिए:

rabbitmqadmin get queue=<QueueName> requeue=false

आपको कतार से पहला संदेश देगा।


1
धन्यवाद, मेरे लिए काम करता है! इसमें योगदान हो सकता है: डिफ़ॉल्ट रूप से खरगोशबिटकमिन को हर जगह से नहीं बुलाया जा सकता है। इसके /var/lib/rabbitmq/mnesia/rabbit@NODENAME-plugins-expand/rabbitmq_management-3.1.3/priv/www/cli पर स्थित है। इसके लिए अनुमतियों को ठीक करने की आवश्यकता है (chmod 755 rabbitmqadmin) और शायद इसे / usr / लोकल / बिन में कॉपी करें, देखें rabbitmq.com/management-cli.html
Scherbius.com

नहीं, आप इसे लिंक से डाउनलोड कर सकते हैं और इसे अपने रास्ते में कहीं रख कर एक्सेस कर सकते हैं।
डाकू

7
यदि आप केवल संदेश देखना चाहते हैं, और इसे कतार से बाहर नहीं निकालना चाहते हैं, तो आपको requeue=falseथोड़ा छोड़ देना चाहिए और बस करना होगाrabbitmqadmin get queue=<QueueName>
jonatan

1
आपको पता होना चाहिए कि आवश्यक संदेश पुनः वितरण ध्वज को सेट करता है, इसलिए बाद के उपभोक्ताओं को एक समान संदेश नहीं मिलेगा
aKiRa

क्या मैं वेब इंटरफेस में संदेश सामग्री देख सकता हूं?
gstackoverflow

40

यहां वे आदेश हैं जिनका उपयोग मैं कतार की सामग्री प्राप्त करने के लिए करता हूं:

RabbitMQ संस्करण 3.1.5 फेडोरा लाइनक्स पर https://www.rabbitmq.com/management-cli.html का उपयोग कर रहा है

यहाँ मेरे एक्सचेंज हैं:

eric@dev ~ $ sudo python rabbitmqadmin list exchanges
+-------+--------------------+---------+-------------+---------+----------+
| vhost |        name        |  type   | auto_delete | durable | internal |
+-------+--------------------+---------+-------------+---------+----------+
| /     |                    | direct  | False       | True    | False    |
| /     | kowalski           | topic   | False       | True    | False    |
+-------+--------------------+---------+-------------+---------+----------+

यहाँ मेरी कतार है:

eric@dev ~ $ sudo python rabbitmqadmin list queues
+-------+----------+-------------+-----------+---------+------------------------+---------------------+--------+----------+----------------+-------------------------+---------------------+--------+---------+
| vhost |   name   | auto_delete | consumers | durable | exclusive_consumer_tag |     idle_since      | memory | messages | messages_ready | messages_unacknowledged |        node         | policy | status  |
+-------+----------+-------------+-----------+---------+------------------------+---------------------+--------+----------+----------------+-------------------------+---------------------+--------+---------+
| /     | myqueue  | False       | 0         | True    |                        | 2014-09-10 13:32:18 | 13760  | 0        | 0              | 0                       |rabbit@ip-11-1-52-125|        | running |
+-------+----------+-------------+-----------+---------+------------------------+---------------------+--------+----------+----------------+-------------------------+---------------------+--------+---------+

क्रैक में कुछ आइटम क्रैक करें:

curl -i -u guest:guest http://localhost:15672/api/exchanges/%2f/kowalski/publish -d '{"properties":{},"routing_key":"abcxyz","payload":"foobar","payload_encoding":"string"}'
HTTP/1.1 200 OK
Server: MochiWeb/1.1 WebMachine/1.10.0 (never breaks eye contact)
Date: Wed, 10 Sep 2014 17:46:59 GMT
content-type: application/json
Content-Length: 15
Cache-Control: no-cache

{"routed":true}

RabbitMQ कतार में संदेश देखें:

eric@dev ~ $ sudo python rabbitmqadmin get queue=myqueue requeue=true count=10
+-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count |                        payload        | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+
| abcxyz      | kowalski | 10            | foobar                                | 6             | string           |            | True        |
| abcxyz      | kowalski | 9             | {'testdata':'test'}                   | 19            | string           |            | True        |
| abcxyz      | kowalski | 8             | {'mykey':'myvalue'}                   | 19            | string           |            | True        |
| abcxyz      | kowalski | 7             | {'mykey':'myvalue'}                   | 19            | string           |            | True        |
+-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+

2
आदेश है sudo python rabbitmqadmin get queue=myqueue requeue=true count=10संदेश देखने के लिए या अंत से संदेश विपंक्ति और फिर उन्हें सामने से requeue करने के लिए। क्या केवल संदेशों को देखने के बजाय उन्हें धोखा देने का एक तरीका है।
अक्षय हजारी

मुझे लगता है कि प्राप्त करना और प्राप्त करना = सही रूप से अनिवार्य रूप से हमें बताता है कि संदेश समाप्त हो गए हैं और प्रदर्शित किए गए हैं और आवश्यक हैं (सामने की ओर धकेल दिया गया)।
अक्षय हजारी

1
जैसा rabbitmqadminकि वेब-आधारित एपीआई से जुड़ता है, क्या सूडो की यहां जरूरत है?
रिचल्व

क्यों करता हैrequeue=True
स्टीफन

20

मैंने rabbitmq- डंप-कतार लिखी, जो RabbitMQ कतार से स्थानीय फ़ाइलों को संदेश डंप करने और संदेशों को उनके मूल क्रम में भेजने की अनुमति देता है।

उदाहरण का उपयोग (कतार के पहले 50 संदेशों को डंप करने के लिए incoming_1):

rabbitmq-dump-queue -url="amqp://user:password@rabbitmq.example.com:5672/" -queue=incoming_1 -max-messages=50 -output-dir=/tmp

10

आप गणना या संदेश प्राप्त करने के लिए RabbitMQ API का उपयोग कर सकते हैं:

/api/queues/vhost/name/get

एक कतार से संदेश प्राप्त करें। (यह एक HTTP GET नहीं है क्योंकि यह कतार की स्थिति को बदल देगा।) आपको एक शरीर की तरह दिखना चाहिए:

{"count":5,"requeue":true,"encoding":"auto","truncate":50000}

गणना संदेशों को प्राप्त करने के लिए अधिकतम संख्या को नियंत्रित करती है। यदि कतार तुरंत उन्हें प्रदान नहीं कर सकती है तो आपको इससे कम संदेश मिल सकते हैं।

requeue निर्धारित करता है कि क्या संदेश कतार से हटा दिया जाएगा। यदि आवश्यक है तो सत्य है कि उनसे अनुरोध किया जाएगा - लेकिन उनका पुनर्वितरण ध्वज सेट किया जाएगा। एन्कोडिंग या तो "ऑटो" होना चाहिए (जिस स्थिति में पेलोड एक स्ट्रिंग के रूप में लौटाया जाएगा यदि यह वैध यूटीएफ -8, और बेस 64 एनकोडेड है), या "बेस 64" (जिस स्थिति में पेलोड हमेशा बेस 64 एनकोडेड होगा)। यदि ट्रंकट मौजूद है तो यह संदेश पेलोड को छोटा कर देगा यदि यह दिए गए आकार (बाइट्स) से बड़ा है। ट्रंकट वैकल्पिक है; अन्य सभी चाबियाँ अनिवार्य हैं।

कृपया ध्यान दें कि HTTP API में प्रकाशित / प्राप्त पथ का उद्देश्य परीक्षण संदेश, डायग्नोस्टिक्स इत्यादि को इंजेक्ट करने के लिए है - वे विश्वसनीय वितरण को लागू नहीं करते हैं और इसलिए उन्हें मैसेजिंग के लिए सामान्य API के बजाय एक sysadmin के टूल के रूप में माना जाना चाहिए।

http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v3_1_3/priv/www/api/index.html


4

इससे थोड़ी देर हो गई, लेकिन हाँ खरगोश के पास ट्रैसर में एक निर्माण है जो आपको लॉग में इनकमिंग संदेशों को देखने की अनुमति देता है। सक्षम होने पर, आप बस कर सकते हैंtail -f /var/tmp/rabbitmq-tracing/.log संदेशों को देखने के लिए (मैक पर) ।

विस्तृत विवरण यहाँ है http://www.mikeobrien.net/blog/tracing-rabbitmq-messages


3
लिंक टूट गया है। दर्पण: web.archive.org/web/20160319074032/http://www.mikeobrien.net/… । अच्छा कस्टम त्रुटि पेज BTW :)
xtreak

0

यदि आप एक कतार से कई संदेश चाहते हैं, तो 10 संदेश कहें, उपयोग करने का आदेश है:

rabbitmqadmin get queue=<QueueName> ackmode=ack_requeue_true count=10

यदि आप नहीं चाहते कि संदेशों की आवश्यकता है, तो बस बदल ackmodeदें ack_requeue_false

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