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

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

sudo rabbitmqctl list_queues списки очередей.

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

Ответы на вопрос(5)

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

RabbitMQ версии 3.1.5 на Fedora 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 |
+-------+----------+-------------+-----------+---------+------------------------+---------------------+--------+----------+----------------+-------------------------+---------------------+--------+---------+

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 видит сообщения в очереди:

[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        |
+-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+
 30 окт. 2017 г., 06:58
Какrabbitmqadmin подключается к веб-интерфейсу API, нужно ли здесь sudo?
 09 авг. 2016 г., 14:10
Является ли командаsudo python rabbitmqadmin get queue=myqueue requeue=true count=10 чтобы увидеть сообщения или удалить сообщения с конца, а затем перевести их на фронт. Есть ли способ просто видеть сообщения вместо того, чтобы удалять их.
 09 авг. 2016 г., 14:12
Я полагаю, что get и Requeue = true, по сути, говорят нам, что сообщения удаляются из очереди, отображаются и помещаются в очередь (задний фронт).

я написалRabbitMQ-дамп-очереди что позволяет выгрузить сообщения из очереди RabbitMQ в локальные файлы и поставить их в очередь в исходном порядке.

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

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

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

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

 27 окт. 2017 г., 22:59
вот новая ссылка:mikeobrien.net/blog/tracing-rabbitmq-messages
 08 мар. 2017 г., 07:12
Ссылка не работает. Зеркало:web.archive.org/web/20160319074032/http://www.mikeobrien.net/… , Хорошая пользовательская ошибка на странице BTW :)
Решение Вопроса

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

/api/queues/vhost/name/get

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

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

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

Requeue определяет, будут ли сообщения удалены из очереди. Если реквизит имеет значение 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-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

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

 09 февр. 2014 г., 07:15
Нет, вы можете скачать его по ссылке и сделать его доступным, разместив его где-нибудь на своем пути.
 16 мая 2013 г., 04:15
@Shears - если вы довольны ответом, можете ли вы пометить его как принятый?
 04 янв. 2017 г., 13:03
Вы должны знать, что запрашивающие сообщения устанавливают флаг повторной доставки, поэтому последующие потребители не получат идентичное сообщение
 07 февр. 2014 г., 16:47
Спасибо, у меня работает! это может способствовать: по умолчанию rabbitmqadmin нельзя вызывать откуда угодно. Он находится в /var/lib/rabbitmq/mnesia/[email protected]/rabbitmq_management-3.1.3/priv/www/cli. Для этого нужно исправить разрешения (chmod 755 rabbitmqadmin) и, возможно, скопировать его в / usr / local / bin, см.rabbitmq.com/management-cli.html
 29 окт. 2015 г., 19:21
Если вы хотите только просмотреть сообщение, а не вынести его из очереди, вам следует удалитьrequeue=false немного и просто сделатьrabbitmqadmin get queue=<QueueName>

Ваш ответ на вопрос