web-dev-qa-db-fra.com

Est-il possible d'afficher le contenu du message RabbitMQ directement à partir de la ligne de commande?

Est-il possible d'afficher le contenu du message RabbitMQ directement à partir de la ligne de commande?

Sudo rabbitmqctl list_queues liste les files d'attente.

Existe-t-il une commande comme Sudo rabbitmqctl list_queue_messages queue_name?

87
Shears

Vous devez activer le plugin de gestion.

rabbitmq-plugins enable rabbitmq_management

Vois ici:

http://www.rabbitmq.com/plugins.html

Et ici pour les spécificités de la gestion.

http://www.rabbitmq.com/management.html

Enfin, une fois l’installation terminée, vous devrez suivre les instructions ci-dessous pour installer et utiliser l’outil rabbitmqadmin. Qui peut être utilisé pour interagir pleinement avec le système. http://www.rabbitmq.com/management-cli.html

Par exemple:

rabbitmqadmin get queue=<QueueName> requeue=false

vous donnera le premier message de la file d'attente.

91
robthewolf

Voici les commandes que j'utilise pour obtenir le contenu de la file d'attente:

RabbitMQ version 3.1.5 sur Fedora linux en utilisant https://www.rabbitmq.com/management-cli.html

Voici mes échanges:

eric@dev ~ $ Sudo python rabbitmqadmin list exchanges
+-------+--------------------+---------+-------------+---------+----------+
| vhost |        name        |  type   | auto_delete | durable | internal |
+-------+--------------------+---------+-------------+---------+----------+
| /     |                    | direct  | False       | True    | False    |
| /     | kowalski           | topic   | False       | True    | False    |
+-------+--------------------+---------+-------------+---------+----------+

Voici ma file d'attente:

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 certains articles dans 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 voir les messages en file d'attente:

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        |
+-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+
36
Eric Leschinski

J'ai écrit rabbitmq-dump-queue qui permet de transférer des messages d'une file d'attente RabbitMQ vers des fichiers locaux et de remettre en file d'attente les messages dans leur ordre d'origine.

Exemple d'utilisation (pour vider les 50 premiers messages de la file d'attente incoming_1):

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

vous pouvez utiliser l’API RabbitMQ pour obtenir le nombre ou les messages:

/api/queues/vhost/name/get

Obtenir des messages d'une file d'attente. (Ce n'est pas un HTTP GET car il modifierait l'état de la file d'attente.) Vous devriez poster un corps ressemblant à:

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

count contrôle le nombre maximum de messages à recevoir. Vous pouvez recevoir moins de messages si la file d’attente ne peut pas les fournir immédiatement.

requeue détermine si les messages seront supprimés de la file d'attente. Si re-file est vrai, ils le seront de nouveau, mais leur drapeau redélivrés sera défini. l'encodage doit être "auto" (auquel cas la charge sera retournée sous forme de chaîne s'il est valide UTF-8 et encodé en base64 sinon), ou "base64" (auquel cas la charge sera toujours encodée en base64). Si truncate est présent, il tronquera la charge utile du message s'il est supérieur à la taille indiquée (en octets). tronquer est facultatif; toutes les autres clés sont obligatoires.

Veuillez noter que les chemins de publication/obtention dans l'API HTTP sont destinés à l'injection de messages de test, de diagnostics, etc. - ils n'implémentent pas une livraison fiable et doivent donc être traités comme un outil sysadmin plutôt qu'une API générale pour la messagerie.

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

8
Jesse Yan

un peu tard pour cela, mais oui, rabbitmq a un traceur intégré qui vous permet de voir les messages entrants dans un journal. Lorsqu'il est activé, vous pouvez simplement tail -f /var/tmp/rabbitmq-tracing/.log (sur mac) pour regarder les messages.

la description détaillée est ici http://www.mikeobrien.net/blog/tracing-rabbitmq-messages

4
domi