เป็นไปได้ไหมที่จะดูเนื้อหาข้อความ RabbitMQ โดยตรงจากบรรทัดคำสั่ง
sudo rabbitmqctl list_queues
แสดงรายการคิว
มีคำสั่งเช่นไรsudo rabbitmqctl list_queue_messages <queue_name>
?
เป็นไปได้ไหมที่จะดูเนื้อหาข้อความ RabbitMQ โดยตรงจากบรรทัดคำสั่ง
sudo rabbitmqctl list_queues
แสดงรายการคิว
มีคำสั่งเช่นไรsudo rabbitmqctl list_queue_messages <queue_name>
?
คำตอบ:
คุณควรเปิดใช้งานปลั๊กอินการจัดการ
rabbitmq-plugins enable rabbitmq_management
ดูที่นี่:
http://www.rabbitmq.com/plugins.html
และสำหรับข้อมูลเฉพาะของการจัดการ
http://www.rabbitmq.com/management.html
ในที่สุดเมื่อตั้งค่าแล้วคุณจะต้องทำตามคำแนะนำด้านล่างเพื่อติดตั้งและใช้เครื่องมือ rabbitmqadmin ซึ่งสามารถใช้เพื่อโต้ตอบกับระบบได้อย่างเต็มที่. http://www.rabbitmq.com/management-cli.html
ตัวอย่างเช่น:
rabbitmqadmin get queue=<QueueName> requeue=false
จะให้ข้อความแรกออกจากคิว
requeue=false
บิตและทำrabbitmqadmin get queue=<QueueName>
นี่คือคำสั่งที่ฉันใช้เพื่อรับเนื้อหาของคิว:
RabbitMQ เวอร์ชัน 3.1.5 บน Fedora linux โดยใช้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 |
+-------+----------+-------------+-----------+---------+------------------------+---------------------+--------+----------+----------------+-------------------------+---------------------+--------+---------+
ยัดไอเทมบางส่วนลงใน myqueue:
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 |
+-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+
sudo python rabbitmqadmin get queue=myqueue requeue=true count=10
เพื่อดูข้อความหรือเพื่อยกเลิกการจัดคิวข้อความจากส่วนท้ายแล้วส่งคำขอไปที่ด้านหน้า มีวิธีใดบ้างที่จะดูข้อความแทนการเลิกจ้าง
rabbitmqadmin
เชื่อมต่อกับ API บนเว็บจำเป็นต้องใช้ sudo ที่นี่หรือไม่
requeue=True
ฉันเขียนrabbitmq-dump-queซึ่งอนุญาตให้ทิ้งข้อความจากคิว RabbitMQ ไปยังไฟล์ในเครื่องและขอข้อความตามลำดับเดิม
ตัวอย่างการใช้งาน (เพื่อถ่ายโอนข้อมูล 50 ข้อความแรกของคิวincoming_1
):
rabbitmq-dump-queue -url="amqp://user:password@rabbitmq.example.com:5672/" -queue=incoming_1 -max-messages=50 -output-dir=/tmp
คุณสามารถใช้ RabbitMQ API เพื่อรับจำนวนหรือข้อความ:
/api/queues/vhost/name/get
รับข้อความจากคิว (นี่ไม่ใช่ HTTP GET เนื่องจากจะเปลี่ยนสถานะของคิว) คุณควรโพสต์เนื้อหาที่มีลักษณะดังนี้:
{"count":5,"requeue":true,"encoding":"auto","truncate":50000}
การนับควบคุมจำนวนข้อความสูงสุดที่จะได้รับ คุณอาจได้รับข้อความน้อยกว่านี้หากคิวไม่สามารถให้ได้ทันที
Requeue กำหนดว่าข้อความจะถูกลบออกจากคิวหรือไม่ หากคำขอเป็นจริงพวกเขาจะถูกร้องขอ แต่จะมีการตั้งค่าสถานะที่ส่งซ้ำ การเข้ารหัสต้องเป็นแบบ "อัตโนมัติ" (ในกรณีนี้เพย์โหลดจะถูกส่งกลับเป็นสตริงหากเป็น UTF-8 ที่ถูกต้องและเข้ารหัส base64 เป็นอย่างอื่น) หรือ "base64" (ซึ่งในกรณีนี้เพย์โหลดจะเข้ารหัส base64 เสมอ) หากมีการตัดทอนจะเป็นการตัดส่วนข้อมูลข้อความหากมีขนาดใหญ่กว่าขนาดที่กำหนด (เป็นไบต์) ตัดทอนเป็นทางเลือก; คีย์อื่น ๆ ทั้งหมดมีผลบังคับใช้
โปรดทราบว่าเส้นทางการเผยแพร่ / รับใน HTTP API มีไว้สำหรับการฉีดข้อความทดสอบการวินิจฉัยและอื่น ๆ - พวกเขาไม่ได้ใช้การจัดส่งที่เชื่อถือได้ดังนั้นจึงควรถือว่าเป็นเครื่องมือของผู้ดูแลระบบแทนที่จะเป็น API ทั่วไปสำหรับการส่งข้อความ
http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v3_1_3/priv/www/api/index.html
ช้าไปหน่อย แต่ใช่ rabbitmq มี build in tracer ที่ช่วยให้คุณเห็นข้อความที่เข้ามาในบันทึก เมื่อเปิดใช้งานคุณสามารถtail -f /var/tmp/rabbitmq-tracing/.log
(บน Mac) เพื่อดูข้อความได้
รายละเอียดรายละเอียดอยู่ที่นี่http://www.mikeobrien.net/blog/tracing-rabbitmq-messages
หากคุณต้องการหลายข้อความจากคิวให้พูด 10 ข้อความคำสั่งที่ใช้คือ:
rabbitmqadmin get queue=<QueueName> ackmode=ack_requeue_true count=10
หากคุณไม่ต้องการให้ข้อความ requeued เพียงการเปลี่ยนแปลงไปackmode
ack_requeue_false
ackmode=ack_requeue_true
ไม่มีrequeue
ตัวเลือกดังที่กล่าวไว้ในคำตอบอื่น ๆ