Можно ли просматривать содержимое сообщения RabbitMQ непосредственно из командной строки?
sudo rabbitmqctl list_queues
перечисляет очереди.
Есть какая-нибудь команда вроде sudo rabbitmqctl list_queue_messages <queue_name>
?
rabbitmq
rabbitmqctl
rabbitmqadmin
Ножницы
источник
источник
Ответы:
Вы должны включить плагин управления.
Посмотреть здесь:
http://www.rabbitmq.com/plugins.html
А вот по специфике управления.
http://www.rabbitmq.com/management.html
Наконец, после настройки вам нужно будет следовать инструкциям ниже, чтобы установить и использовать инструмент rabbitmqadmin. Что можно использовать для полноценного взаимодействия с системой. http://www.rabbitmq.com/management-cli.html
Например:
предоставит вам первое сообщение из очереди.
источник
requeue=false
бит и просто сделатьrabbitmqadmin get queue=<QueueName>
Вот команды, которые я использую для получения содержимого очереди:
RabbitMQ версии 3.1.5 в Fedora linux с использованием https://www.rabbitmq.com/management-cli.html
Вот мои обмены:
Вот моя очередь:
Поместите в myqueue несколько элементов:
RabbitMQ видит сообщения в очереди:
источник
sudo python rabbitmqadmin get queue=myqueue requeue=true count=10
для просмотра сообщений или удаления сообщений с конца, а затем повторного включения их в очередь. Есть ли способ просто просмотреть сообщения, а не удалять их из очереди.rabbitmqadmin
подключается к веб-API, здесь требуется sudo?requeue=True
Я написал rabbitmq-dump-queue, который позволяет выгружать сообщения из очереди RabbitMQ в локальные файлы и запрашивать сообщения в исходном порядке.
Пример использования (для выгрузки первых 50 сообщений очереди
incoming_1
):источник
вы можете использовать RabbitMQ API для получения счетчика или сообщений:
Получать сообщения из очереди. (Это не HTTP-запрос GET, так как он изменяет состояние очереди.) Вы должны опубликовать тело, выглядящее следующим образом:
count контролирует максимальное количество получаемых сообщений. Вы можете получить меньше сообщений, если очередь не может предоставить их немедленно.
Requeue определяет, будут ли сообщения удаляться из очереди. Если Requeue истинно, они будут повторно поставлены в очередь, но их флаг повторной доставки будет установлен. кодирование должно быть либо «автоматическим» (в этом случае полезная нагрузка будет возвращена в виде строки, если она действительна в кодировке UTF-8, и в противном случае в кодировке base64), либо «base64» (в этом случае полезная нагрузка всегда будет в кодировке base64). Если присутствует truncate, он усекает полезную нагрузку сообщения, если она больше указанного размера (в байтах). усечение необязательно; все остальные ключи являются обязательными.
Обратите внимание, что пути публикации / получения в 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
источник
Если вам нужно несколько сообщений из очереди, скажем 10 сообщений, используйте следующую команду:
Если вы не хотите, чтобы сообщения повторно ставились в очередь, просто измените
ackmode
наack_requeue_false
.источник
ackmode=ack_requeue_true
, больше нет такойrequeue
опции, как упоминалось в других ответах