是否可以直接从命令行查看RabbitMQ消息内容?

是否可以直接从命令行查看RabbitMQ消息内容?

sudo rabbitmqctl list_queues列出队列。

有没有像sudo rabbitmqctl list_queue_messages queue_name命令的命令?

你应该启用pipe理插件。

 rabbitmq-plugins enable rabbitmq_management 

看这里:

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

而这里的具体pipe理。

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

最后一次设置完成后,您需要按照以下说明安装和使用rabbitmqadmin工具。 哪些可以用来充分与系统交互。 http://www.rabbitmq.com/management-cli.html

例如:

 rabbitmqadmin get queue=<QueueName> requeue=false 

会给你第一条消息。

以下是我用来获取队列内容的命令:

在Fedora linux上使用https://www.rabbitmq.com/management-cli.html&#x7684; RabbitMQ版本3.1.5

这是我的交stream:

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

我写了rabbitmq-dump-queue ,它允许将消息从RabbitMQ队列转储到本地文件,并按照原始顺序重新排列消息。

使用示例(转储队列incoming_1的前50个消息):

 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} 

计数控制要获取的最大消息数。 如果队列不能立即提供,则可能会得到比此更less的消息。

请求决定是否将消息从队列中删除。 如果要求是真的,他们将被重新sorting – 但他们的重新标志将被设置。 编码必须是“自动的”(在这种情况下,如果有效的UTF-8以base64编码,则有效载荷将作为string返回)或“base64”(在这种情况下,有效载荷总是以base64编码)。 如果存在truncate,则它将截断消息有效载荷,如果它大于给定的大小(以字节为单位)。 截断是可选的; 所有其他密钥是强制性的。

请注意,HTTP API中的发布/获取path旨在用于注入testing消息,诊断等 – 它们不实现可靠的传递,所以应该被视为系统pipe理员的工具而不是通用的消息传递API。

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

有点晚了,但是是的rabbitmq有一个内置跟踪器,可以让你看到日志中的消息。 启用后,您可以在tail -f /var/tmp/rabbitmq-tracing/.log (在Mac上)中查看消息。

详细描述在这里http://www.mikeobrien.net/blog/tracing-rabbitmq-messages/