是否可以直接从命令行查看RabbitMQ消息内容?sudo rabbitmqctl list_queues列出队列。是否有类似sudo rabbitmqctl list_queue_messages <queue_name>的命令?
sudo rabbitmqctl list_queues
sudo rabbitmqctl list_queue_messages <queue_name>
nzkunb0c1#
您应该启用管理插件。
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
将为您提供队列中的第一条消息。
zujrkrfu2#
下面是我用来获取队列内容的命令:在Fedora Linux上使用https://www.rabbitmq.com/management-cli.html的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 | +-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+
ecr0jaav3#
我编写了rabbitmq-dump-queue,它允许将消息从RabbitMQ队列转储到本地文件,并按消息的原始顺序重新排队。示例用法(转储队列incoming_1的前50条消息):
incoming_1
rabbitmq-dump-queue -url="amqp://user:password@rabbitmq.example.com:5672/" -queue=incoming_1 -max-messages=50 -output-dir=/tmp
9ceoxa924#
如果您想要队列中的多个消息,例如10个消息,则要使用的命令为:
rabbitmqadmin get queue=<QueueName> ackmode=ack_requeue_true count=10
这是它在http://localhost:15672上提供的前端界面上的显示方式:
如果您不想让消息重新排队,只需将ackmode更改为ack_requeue_false。
ackmode
ack_requeue_false
woobm2wo5#
您可以使用RabbitMQ API来获取计数或消息:
/api/queues/vhost/name/get
从队列中获取消息。(这不是HTTP GET,因为它将改变队列的状态。)您应该发布如下所示的正文:
{"count":5,"requeue":true,"encoding":"auto","truncate":50000}
count控制要获取的最大消息数。如果队列无法立即提供消息,则获取的消息数可能少于此值。queue确定是否将消息从队列中删除。如果queue为true,则将对消息进行重新排队,但将设置其重新传递标志。编码必须为“auto”(在这种情况下,如果有效载荷是有效的UTF-8,则将其作为字符串返回,否则将以base64编码),或“base64”(在这种情况下,有效负载将始终为base64编码)。如果存在truncate,则当消息有效负载大于给定大小(以字节为单位)时,它将截断消息有效负载。truncate是可选的;所有其他键都是必需的。请注意,HTTP API中的publish / get路径用于注入测试消息、诊断等-它们不实现可靠的传递,因此应将其视为系统管理员的工具,而不是用于消息传递的通用API。http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v3_1_3/priv/www/api/index.html
wqnecbli6#
有点晚了,但是是的,rabbitmq有一个内置的跟踪器,允许你在日志中看到传入的消息。当启用时,你可以只看tail -f /var/tmp/rabbitmq-tracing/.log(在mac上)的消息。详细说明见http://www.mikeobrien.net/blog/tracing-rabbitmq-messages
tail -f /var/tmp/rabbitmq-tracing/.log
6条答案
按热度按时间nzkunb0c1#
您应该启用管理插件。
请参阅此处:
http://www.rabbitmq.com/plugins.html
这里还有具体的管理。
http://www.rabbitmq.com/management.html
最后,一旦设置好,你需要按照下面的说明安装和使用rabbitmqadmin工具。它可以用来与系统进行完全的交互。http://www.rabbitmq.com/management-cli.html
例如:
将为您提供队列中的第一条消息。
zujrkrfu2#
下面是我用来获取队列内容的命令:
在Fedora Linux上使用https://www.rabbitmq.com/management-cli.html的RabbitMQ 3.1.5版
以下是我的交流:
下面是我的队列:
将一些项目强行写入myqueue:
RabbitMQ查看队列中的消息:
ecr0jaav3#
我编写了rabbitmq-dump-queue,它允许将消息从RabbitMQ队列转储到本地文件,并按消息的原始顺序重新排队。
示例用法(转储队列
incoming_1
的前50条消息):9ceoxa924#
如果您想要队列中的多个消息,例如10个消息,则要使用的命令为:
这是它在http://localhost:15672上提供的前端界面上的显示方式:
如果您不想让消息重新排队,只需将
ackmode
更改为ack_requeue_false
。woobm2wo5#
您可以使用RabbitMQ API来获取计数或消息:
从队列中获取消息。(这不是HTTP GET,因为它将改变队列的状态。)您应该发布如下所示的正文:
count控制要获取的最大消息数。如果队列无法立即提供消息,则获取的消息数可能少于此值。
queue确定是否将消息从队列中删除。如果queue为true,则将对消息进行重新排队,但将设置其重新传递标志。编码必须为“auto”(在这种情况下,如果有效载荷是有效的UTF-8,则将其作为字符串返回,否则将以base64编码),或“base64”(在这种情况下,有效负载将始终为base64编码)。如果存在truncate,则当消息有效负载大于给定大小(以字节为单位)时,它将截断消息有效负载。truncate是可选的;所有其他键都是必需的。
请注意,HTTP API中的publish / get路径用于注入测试消息、诊断等-它们不实现可靠的传递,因此应将其视为系统管理员的工具,而不是用于消息传递的通用API。
http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v3_1_3/priv/www/api/index.html
wqnecbli6#
有点晚了,但是是的,rabbitmq有一个内置的跟踪器,允许你在日志中看到传入的消息。当启用时,你可以只看
tail -f /var/tmp/rabbitmq-tracing/.log
(在mac上)的消息。详细说明见http://www.mikeobrien.net/blog/tracing-rabbitmq-messages