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

是否可以直接从命令行查看RabbitMQ消息内容?,rabbitmq,rabbitmqctl,rabbitmqadmin,Rabbitmq,Rabbitmqctl,Rabbitmqadmin,是否可以直接从命令行查看RabbitMQ消息内容 sudo rabbitmqctl list_队列列出队列 是否有类似于sudo rabbitmqctl list\u queue\u messages的命令?您应该启用管理插件 rabbitmq-plugins enable rabbitmq_management 请看这里: 这里是管理的细节 最后,设置完成后,您需要按照以下说明安装和使用rabbitmqadmin工具。可用于与系统完全交互。 例如: rabbitmqadmin get

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

sudo rabbitmqctl list_队列
列出队列


是否有类似于sudo rabbitmqctl list\u queue\u messages的命令?

您应该启用管理插件

rabbitmq-plugins enable rabbitmq_management
请看这里:

这里是管理的细节

最后,设置完成后,您需要按照以下说明安装和使用rabbitmqadmin工具。可用于与系统完全交互。

例如:

rabbitmqadmin get queue=<QueueName> requeue=false
rabbitmqadmin get queue=requeue=false

将为您提供离开队列的第一条消息。

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

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    |
+-------+--------------------+---------+-------------+---------+----------+
这是我的队列:

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队列转储到本地文件,并按原始顺序重新查询消息

示例用法(转储队列
传入\u 1的前50条消息):


有点晚了,但rabbitmq有一个内置跟踪程序,允许您在日志中查看输入消息。启用后,您只需
tail-f/var/tmp/rabbitmq tracing/.log
(在mac上)即可查看消息


详细说明如下

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

/api/queues/vhost/name/get
从队列中获取消息。(这不是HTTP GET,因为它会改变队列的状态。)您应该发布一个如下所示的正文:

{"count":5,"requeue":true,"encoding":"auto","truncate":50000}
计数控制要获取的最大消息数。如果队列不能立即提供消息,您可能会收到比这更少的消息

requeue确定消息是否将从队列中删除。如果requeue为true,则将对其进行重新查询,但将设置其重新交付标志。 编码必须是“自动”(在这种情况下,如果有效的UTF-8,则有效负载将作为字符串返回,否则为base64编码)或“base64”(在这种情况下,有效负载将始终为base64编码)。 如果存在truncate,则如果消息负载大于给定的大小(以字节为单位),它将截断消息负载。 截断是可选的;所有其他钥匙都是强制性的

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


如果要从队列中获取多条消息,例如10条消息,则要使用的命令是:

rabbitmqadmin get queue=<QueueName> ackmode=ack_requeue_true count=10
rabbitmqadmin get queue=ackmode=ack\u requeue\u true count=10

如果您不想重新查询消息,只需将
ackmode
更改为
ack\u requeue\u false

谢谢,适合我!这可能有助于:默认情况下,不能从任何地方调用rabbitmqadmin。它位于/var/lib/rabbitmq/mnesia/rabbit@NODENAME-插件扩展/rabbitmq_management-3.1.3/priv/www/cli。需要修复它的权限(chmod 755 rabbitmqadmin)并可能将其复制到/usr/local/bin,请参见否,您可以从链接下载它,并通过将其放置在路径中的某个位置使其可访问。如果您只想查看消息,而不想将其从队列中取出,您应该删除
requeue=false
位,只需执行
rabbitmqadmin get queue=
您应该知道,requeue消息设置了重新交付标志,因此,后续使用者将不会获得相同的消息。我可以在web界面中查看消息内容吗?是否使用命令
sudo python rabbitmqadmin get queue=myqueue requeue=true count=10
查看消息或将消息从末尾排出队列,然后将消息重新排到前端。有没有一种方法可以直接查看消息而不是对其进行查询。我想get和requeue=true本质上告诉我们消息是排队、显示和重新查询的(推到前面)。当
rabbitmqadmin
连接到基于web的API时,这里需要sudo吗?为什么
requeue=true
链接会断开。镜像:。很好的自定义错误页面顺便说一句:)关于在linux上安装rabbitmqadmin加上一个用于
ackmode=ack\u requeue\u true
,没有其他回答中提到的
requeue
选项了。请注意。
requeue
键现在是
ackmode
,如本文所述->
rabbitmqadmin get queue=<QueueName> ackmode=ack_requeue_true count=10