Можно ли просмотреть содержимое сообщения RabbitMQ непосредственно из командной строки?
Можно ли просмотреть содержимое сообщения RabbitMQ непосредственно из командной строки?
sudo rabbitmqctl list_queues
списки очередей.
Есть ли команда команда, как sudo rabbitmqctl list_queue_messages queue_name
?
5 ответов
Вы должны включить плагин управления.
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
выдаст вам первое сообщение из очереди.
Вот команды, которые я использую, чтобы получить содержимое очереди:
RabbitMQ версии 3.1.5 в Fedora linux с использованием https://www.rabbitmq.com/management-cli.html
Вот мои обмены:
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 |
+-------+----------+-------------+-----------+---------+------------------------+---------------------+--------+----------+----------------+-------------------------+---------------------+--------+---------+
Cram некоторые предметы в 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 |
+-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+
Я написал https://github.com/dubek/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
Если вам нужно несколько сообщений из очереди, скажем 10 сообщений, используйте следующую команду:
rabbitmqadmin get queue=<QueueName> ackmode=ack_requeue_true count=10
Если вы не хотите, чтобы сообщения повторно ставились в очередь, просто измените ackmode
к ack_requeue_false
.
Вы можете использовать RabbitMQ API для подсчета или сообщений:
/api/queues/vhost/name/get
Получать сообщения из очереди. (Это не HTTP GET, так как он изменит состояние очереди.) Вы должны опубликовать тело в следующем виде:
{"count":5,"requeue":true,"encoding":"auto","truncate":50000}
count контролирует максимальное количество сообщений для получения. Вы можете получить меньше сообщений, чем это, если очередь не может немедленно предоставить их.
Re queue определяет, будут ли сообщения удалены из очереди. Если реквизит равен true, он будет поставлен в очередь, но будет установлен их флаг доставки. кодирование должно быть либо "автоматическим" (в этом случае полезная нагрузка будет возвращена в виде строки, если это допустимый код UTF-8, и base64 кодируется в противном случае), либо "base64" (в этом случае полезная нагрузка всегда будет кодироваться в base64). Если присутствует усечение, оно урезает полезную нагрузку сообщения, если оно больше указанного размера (в байтах). усечение необязательно; все остальные ключи являются обязательными.
Обратите внимание, что пути публикации / получения в HTTP API предназначены для введения тестовых сообщений, диагностики и т. Д. - они не обеспечивают надежную доставку и поэтому должны рассматриваться как инструмент системного администратора, а не как общий 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