Có thể xem nội dung tin nhắn RabbitMQ trực tiếp từ dòng lệnh không?


Câu trả lời:


105

Bạn nên bật plugin quản lý.

rabbitmq-plugins enable rabbitmq_management

Xem tại đây:

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

Và đây để biết chi tiết cụ thể về quản lý.

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

Cuối cùng sau khi thiết lập, bạn sẽ cần làm theo hướng dẫn bên dưới để cài đặt và sử dụng công cụ Rabbitmqadmin. Cái nào có thể được sử dụng để tương tác hoàn toàn với hệ thống. http://www.rabbitmq.com/management-cli.html

Ví dụ:

rabbitmqadmin get queue=<QueueName> requeue=false

sẽ cung cấp cho bạn tin nhắn đầu tiên trong hàng đợi.


1
Cảm ơn, làm việc cho tôi! điều này có thể góp phần: theo mặc định, không thể gọi Rabbitmqadmin từ mọi nơi. Nó nằm trong /var/lib/rabbitmq/mnesia/rabbit@NODENAME-plugins-expand/rabbitmq_management-3.1.3/priv/www/cli. Người ta cần sửa quyền cho nó (chmod 755 Rabbitmqadmin) và có thể sao chép nó vào / usr / local / bin, xem Rabbitmq.com/management-cli.html
Scherbius.com

Không, bạn có thể tải xuống từ liên kết và làm cho nó có thể truy cập được bằng cách đặt nó ở đâu đó trong đường dẫn của bạn.
robthewolf

7
Nếu bạn chỉ muốn xem tin nhắn, và không mang nó ra khỏi hàng đợi, bạn nên thả các requeue=falsebit và chỉ làmrabbitmqadmin get queue=<QueueName>
Jonatan

1
Bạn nên lưu ý rằng các thông điệp requeueing đặt cờ gửi lại, để người tiêu dùng tiếp theo sẽ không nhận được một thông báo giống hệt nhau
Akira

Tôi có thể xem nội dung tin nhắn trong giao diện web không?
gstackoverflow

40

Đây là các lệnh tôi sử dụng để lấy nội dung của hàng đợi:

Phiên bản RabbitMQ 3.1.5 trên Fedora linux bằng https://www.rabbitmq.com/management-cli.html

Đây là những trao đổi của tôi:

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

Đây là hàng đợi của tôi:

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 |
+-------+----------+-------------+-----------+---------+------------------------+---------------------+--------+----------+----------------+-------------------------+---------------------+--------+---------+

Đặt một số mục vào 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 xem các tin nhắn trong hàng đợi:

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
Là lệnh sudo python rabbitmqadmin get queue=myqueue requeue=true count=10để xem thư hoặc xếp thứ tự các thư từ cuối rồi xếp lại hàng trước. Có cách nào để chỉ xem các tin nhắn thay vì deque de chúng.
Akshay Hazari

Tôi cho rằng get và requeue = true về cơ bản cho chúng ta biết rằng các thông báo được giảm giá trị và hiển thị và xếp lại hàng (push_back to front).
Akshay Hazari

1
Khi rabbitmqadminkết nối với API dựa trên web, có cần sudo ở đây không?
Richlv

Tại saorequeue=True
stephen

20

Tôi đã viết Rabbitmq-dump-queue cho phép kết xuất các thư từ hàng đợi RabbitMQ vào các tệp cục bộ và sắp xếp lại các thư theo thứ tự ban đầu của chúng.

Cách sử dụng ví dụ (để kết xuất 50 thông báo đầu tiên của hàng đợi incoming_1):

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

10

bạn có thể sử dụng API RabbitMQ để nhận số lượng hoặc tin nhắn:

/api/queues/vhost/name/get

Nhận tin nhắn từ một hàng đợi. (Đây không phải là HTTP GET vì nó sẽ thay đổi trạng thái của hàng đợi.) Bạn nên đăng nội dung như sau:

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

đếm kiểm soát số lượng tin nhắn tối đa nhận được. Bạn có thể nhận được ít tin nhắn hơn mức này nếu hàng đợi không thể cung cấp chúng ngay lập tức.

requeue xác định liệu các thư có bị xóa khỏi hàng đợi hay không. Nếu việc xếp hàng lại là đúng, chúng sẽ được xếp lại hàng - nhưng cờ đã gửi lại của chúng sẽ được đặt. mã hóa phải là "tự động" (trong trường hợp đó, trọng tải sẽ được trả về dưới dạng chuỗi nếu nó là UTF-8 hợp lệ và được mã hóa base64 theo cách khác) hoặc "base64" (trong trường hợp đó, trọng tải sẽ luôn được mã hóa base64). Nếu hiện tại truncate, nó sẽ cắt bớt tải trọng thông báo nếu nó lớn hơn kích thước đã cho (tính bằng byte). cắt ngắn là tùy chọn; tất cả các khóa khác là bắt buộc.

Xin lưu ý rằng các đường dẫn xuất bản / nhận được trong API HTTP nhằm mục đích đưa vào các thông báo thử nghiệm, chẩn đoán, v.v. - chúng không triển khai phân phối đáng tin cậy và do đó, nên được coi là công cụ của sysadmin hơn là một API chung để nhắn tin.

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


4

hơi muộn đối với điều này, nhưng có Rabbitmq có tích hợp theo dõi cho phép bạn xem các thông báo gửi đến trong nhật ký. Khi được bật, bạn có thể chỉ tail -f /var/tmp/rabbitmq-tracing/.log(trên mac) để xem tin nhắn.

mô tả chi tiết ở đây http://www.mikeobrien.net/blog/tracing-rabbitmq-messages


3
Liên kết bị hỏng. Gương: web.archive.org/web/20160319074032/http://www.mikeobrien.net/… . Trang lỗi tùy chỉnh tốt đẹp BTW :)
xtreak

0

Nếu bạn muốn có nhiều thư từ một hàng đợi, chẳng hạn như 10 thư, lệnh sử dụng là:

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

Nếu bạn không muốn các thư được xếp lại hàng, chỉ cần thay đổi ackmodethành ack_requeue_false.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.