Подтвердить что ты не робот

Возможно ли просматривать содержимое сообщения RabbitMQ непосредственно из командной строки?

Можно ли просматривать содержимое сообщения RabbitMQ непосредственно из командной строки?

sudo rabbitmqctl list_queues перечисляет очереди.

Есть ли какая-либо команда, например sudo rabbitmqctl list_queue_messages queue_name?

4b9b3361

Ответ 1

Вы должны включить плагин управления.

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

предоставит вам первое сообщение из очереди.

Ответ 2

Вот команды, которые я использую для получения содержимого очереди:

RabbitMQ версии 3.1.5 для Linux с помощью https://www.rabbitmq.com/management-cli.html

Вот мои обмены:

[email protected] ~ $ sudo python rabbitmqadmin list exchanges
+-------+--------------------+---------+-------------+---------+----------+
| vhost |        name        |  type   | auto_delete | durable | internal |
+-------+--------------------+---------+-------------+---------+----------+
| /     |                    | direct  | False       | True    | False    |
| /     | kowalski           | topic   | False       | True    | False    |
+-------+--------------------+---------+-------------+---------+----------+

Вот моя очередь:

[email protected] ~ $ 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                       |[email protected]|        | 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 см. сообщения в очереди:

[email protected] ~ $ 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        |
+-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+

Ответ 3

Я написал rabbitmq-dump-queue, который позволяет отправлять сообщения из очереди RabbitMQ в локальные файлы и переписывать сообщения в исходном порядке.

Пример использования (для вывода первых 50 сообщений очереди incoming_1):

rabbitmq-dump-queue -url="amqp://user:[email protected]:5672/" -queue=incoming_1 -max-messages=50 -output-dir=/tmp

Ответ 4

Вы можете использовать RabbitMQ API для подсчета или сообщений:

/api/queues/vhost/name/get

Получать сообщения из очереди. (Это не HTTP GET, поскольку он изменит состояние очереди.) Вы должны опубликовать тело в следующем виде:

{"count":5,"requeue":true,"encoding":"auto","truncate":50000}

count контролирует максимальное количество сообщений для получения. Вы можете получить меньше сообщений, чем это, если очередь не может немедленно предоставить их.

Requeue определяет, будут ли сообщения удалены из очереди. Если реквизит имеет значение true, они будут поставлены в очередь - но их флаг доставки будет установлен. кодирование должно быть либо "auto" (в этом случае полезная нагрузка будет возвращена в виде строки, если это допустимый код UTF-8, и base64 кодируется в противном случае), либо "base64" (в этом случае полезная нагрузка всегда будет кодироваться в base64). Если присутствует усечение, оно урезает полезную нагрузку сообщения, если оно больше указанного размера (в байтах). усечение необязательно; все остальные ключи являются обязательными.

Обратите внимание, что пути публикации/получения в HTTP API предназначены для внедрения тестовых сообщений, диагностики и т.д. - они не обеспечивают надежную доставку и поэтому должны рассматриваться как инструмент sysadmin, а не как общий API для обмена сообщениями.

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

Ответ 5

немного поздно, но у rabbitmq есть встроенная трассировка, которая позволяет вам видеть входящие сообщения в журнале. Когда включено, вы можете просто tail -f/var/tmp/rabbitmq-tracing/.log (на Mac) для просмотра сообщений.

подробное описание здесь http://www.mikeobrien.net/blog/tracing-rabbitmq-messages