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

She*_*ars 91 rabbitmq rabbitmqctl rabbitmqadmin

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

sudo rabbitmqctl list_queues 列出队列.

有没有命令命令sudo rabbitmqctl list_queue_messages queue_name

rob*_*olf 99

您应该启用管理插件.

rabbitmq-plugins enable rabbitmq_management
Run Code Online (Sandbox Code Playgroud)

看这里:

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
Run Code Online (Sandbox Code Playgroud)

将为您提供队列中的第一条消息.

  • @Shears - 如果您对答案感到满意,可以将其标记为已接受吗? (11认同)
  • 如果您只想查看消息,而不是将其从队列中取出,则应该删除``requeue = false``位并执行``rabbitmqadmin get queue = <QueueName>`` (6认同)
  • 您应该知道重新排队的消息设置了重新传递标志,因此后续消费者不会收到相同的消息 (2认同)
  • 使用 `ackmode=ack_requeue_false` 删除消息或使用 `ackmode=ack_requeue_true` 将消息保留在队列中,而不是 `requeue=false` (2认同)

Eri*_*ski 39

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

使用https://www.rabbitmq.com/management-cli.html在Fedora linux上运行RabbitMQ 3.1.5版

这是我的交流:

eric@dev ~ $ sudo python rabbitmqadmin list exchanges
+-------+--------------------+---------+-------------+---------+----------+
| vhost |        name        |  type   | auto_delete | durable | internal |
+-------+--------------------+---------+-------------+---------+----------+
| /     |                    | direct  | False       | True    | False    |
| /     | kowalski           | topic   | False       | True    | False    |
+-------+--------------------+---------+-------------+---------+----------+
Run Code Online (Sandbox Code Playgroud)

这是我的队列:

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 |
+-------+----------+-------------+-----------+---------+------------------------+---------------------+--------+----------+----------------+-------------------------+---------------------+--------+---------+
Run Code Online (Sandbox Code Playgroud)

将一些物品塞进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}
Run Code Online (Sandbox Code Playgroud)

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        |
+-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+
Run Code Online (Sandbox Code Playgroud)

  • 是命令sudo python rabbitmqadmin get queue = myqueue requeue = true count = 10来查看消息或从末尾将消息出队,然后将它们重新排队到最前面。有没有一种方法可以看到消息而不是使消息出队。 (2认同)

dub*_*bek 17

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

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

rabbitmq-dump-queue -url="amqp://user:password@rabbitmq.example.com:5672/" -queue=incoming_1 -max-messages=50 -output-dir=/tmp
Run Code Online (Sandbox Code Playgroud)


小智 9

您可以使用RabbitMQ API来获取计数或消息:

/api/queues/vhost/name/get
Run Code Online (Sandbox Code Playgroud)

从队列中获取消息.(这不是HTTP GET,因为它会改变队列的状态.)你应该发布一个看起来像的身体:

{"count":5,"requeue":true,"encoding":"auto","truncate":50000}
Run Code Online (Sandbox Code Playgroud)

count控制要获取的最大消息数.如果队列无法立即提供,则可能会收到比此更少的消息.

requeue确定是否将从队列中删除消息.如果requeue为true,它们将被重新排队 - 但是它们的redelivered标志将被设置.encoding必须是"auto"(在这种情况下,如果有效负载将是有效的UTF-8,则返回为字符串,否则为base64编码)或"base64"(在这种情况下,有效负载将始终为base64编码).如果存在truncate,它将截断消息有效负载,如果它大于给定的大小(以字节为单位).truncate是可选的; 所有其他密钥是强制性的.

请注意,HTTP API中的发布/获取路径用于注入测试消息,诊断等 - 它们不实现可靠的传递,因此应被视为sysadmin的工具,而不是用于消息传递的通用API.

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


Cal*_*iah 7

如果你想要一个队列中的多条消息,比如说 10 条消息,使用的命令是:

rabbitmqadmin get queue=<QueueName> ackmode=ack_requeue_true count=10
Run Code Online (Sandbox Code Playgroud)

如果您不希望消息重新排队,只需更改ackmodeack_requeue_false.

  • 为“ackmode=ack_requeue_true”加一个,不再有其他答案中提到的“requeue”选项 (3认同)

dom*_*omi 5

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

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

  • 链接坏了。镜像:http://web.archive.org/web/20160319074032/http://www.mikeobrien.net/blog/tracing-rabbitmq-messages。不错的自定义错误页面 BTW :) (4认同)