È possibile visualizzare il contenuto del messaggio RabbitMQ direttamente dalla riga di comando?
sudo rabbitmqctl list_queues
elenca le code.
C'è qualche comando simile sudo rabbitmqctl list_queue_messages <queue_name>
?
È possibile visualizzare il contenuto del messaggio RabbitMQ direttamente dalla riga di comando?
sudo rabbitmqctl list_queues
elenca le code.
C'è qualche comando simile sudo rabbitmqctl list_queue_messages <queue_name>
?
Risposte:
Dovresti abilitare il plugin di gestione.
rabbitmq-plugins enable rabbitmq_management
Vedere qui:
http://www.rabbitmq.com/plugins.html
E qui per le specifiche della gestione.
http://www.rabbitmq.com/management.html
Infine, una volta impostato, dovrai seguire le istruzioni seguenti per installare e utilizzare lo strumento rabbitmqadmin. Che può essere utilizzato per interagire completamente con il sistema. http://www.rabbitmq.com/management-cli.html
Per esempio:
rabbitmqadmin get queue=<QueueName> requeue=false
ti darà il primo messaggio fuori dalla coda.
requeue=false
bit e farlorabbitmqadmin get queue=<QueueName>
Ecco i comandi che utilizzo per ottenere il contenuto della coda:
RabbitMQ versione 3.1.5 su Fedora linux utilizzando https://www.rabbitmq.com/management-cli.html
Ecco i miei scambi:
eric@dev ~ $ sudo python rabbitmqadmin list exchanges
+-------+--------------------+---------+-------------+---------+----------+
| vhost | name | type | auto_delete | durable | internal |
+-------+--------------------+---------+-------------+---------+----------+
| / | | direct | False | True | False |
| / | kowalski | topic | False | True | False |
+-------+--------------------+---------+-------------+---------+----------+
Ecco la mia coda:
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 |
+-------+----------+-------------+-----------+---------+------------------------+---------------------+--------+----------+----------------+-------------------------+---------------------+--------+---------+
Riempi alcuni oggetti in 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 vede i messaggi in coda:
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 |
+-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+
sudo python rabbitmqadmin get queue=myqueue requeue=true count=10
per vedere i messaggi o per rimuovere dalla coda i messaggi dalla fine e poi riaccodarli in primo piano. C'è un modo per vedere solo i messaggi invece di rimuoverli.
rabbitmqadmin
connette all'API basata sul Web, è necessario sudo qui?
requeue=True
Ho scritto rabbitmq-dump-queue che consente di scaricare i messaggi da una coda RabbitMQ a file locali e di riaccodare i messaggi nell'ordine originale.
Esempio di utilizzo (per eseguire il dump dei primi 50 messaggi della coda incoming_1
):
rabbitmq-dump-queue -url="amqp://user:password@rabbitmq.example.com:5672/" -queue=incoming_1 -max-messages=50 -output-dir=/tmp
puoi utilizzare RabbitMQ API per ottenere conteggio o messaggi:
/api/queues/vhost/name/get
Ricevi messaggi da una coda. (Questo non è un HTTP GET in quanto altererà lo stato della coda.) Dovresti pubblicare un corpo simile a:
{"count":5,"requeue":true,"encoding":"auto","truncate":50000}
count controlla il numero massimo di messaggi da ricevere. Potresti ricevere meno messaggi di questo se la coda non è in grado di fornirli immediatamente.
requeue determina se i messaggi verranno rimossi dalla coda. Se la riaccodamento è vera, verranno riaccodati, ma verrà impostato il contrassegno di riconsegna. la codifica deve essere "auto" (nel qual caso il payload verrà restituito come una stringa se è valido UTF-8 e codificato in base64 in altro modo) o "base64" (nel qual caso il payload sarà sempre codificato in base64). Se è presente truncate, troncerà il payload del messaggio se è maggiore della dimensione fornita (in byte). truncate è facoltativo; tutte le altre chiavi sono obbligatorie.
Tieni presente che i percorsi di pubblicazione / acquisizione nell'API HTTP sono destinati all'iniezione di messaggi di prova, diagnostica, ecc. - Non implementano una consegna affidabile e quindi dovrebbero essere trattati come uno strumento di amministratore di sistema piuttosto che un'API generale per la messaggistica.
http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v3_1_3/priv/www/api/index.html
un po 'tardi per questo, ma sì, rabbitmq ha una build in tracer che ti permette di vedere i messaggi in arrivo in un log. Quando abilitato, puoi semplicemente tail -f /var/tmp/rabbitmq-tracing/.log
(su Mac) guardare i messaggi.
la descrizione dettagliata è qui http://www.mikeobrien.net/blog/tracing-rabbitmq-messages