RabbitMQ mesaj içeriğini doğrudan komut satırından görüntülemek mümkün müdür?
sudo rabbitmqctl list_queues
kuyrukları listeler.
Gibi bir komut var mı sudo rabbitmqctl list_queue_messages <queue_name>
?
Yanıtlar:
Yönetim eklentisini etkinleştirmelisiniz.
rabbitmq-plugins enable rabbitmq_management
Buraya bakın:
http://www.rabbitmq.com/plugins.html
Ve burada yönetimin ayrıntıları için.
http://www.rabbitmq.com/management.html
Son olarak, bir kez kurulduktan sonra, rabbitmqadmin aracını kurmak ve kullanmak için aşağıdaki talimatları izlemeniz gerekecektir. Sistemle tam olarak etkileşim kurmak için kullanılabilir. http://www.rabbitmq.com/management-cli.html
Örneğin:
rabbitmqadmin get queue=<QueueName> requeue=false
size kuyruktaki ilk mesajı verecektir.
requeue=false
biraz bırakıp yapmalısınızrabbitmqadmin get queue=<QueueName>
Sıranın içeriğini almak için kullandığım komutlar:
Kullanarak Fedora Linux üzerinde RabbitMQ sürüm 3.1.5 https://www.rabbitmq.com/management-cli.html
Borsalarım:
eric@dev ~ $ sudo python rabbitmqadmin list exchanges
+-------+--------------------+---------+-------------+---------+----------+
| vhost | name | type | auto_delete | durable | internal |
+-------+--------------------+---------+-------------+---------+----------+
| / | | direct | False | True | False |
| / | kowalski | topic | False | True | False |
+-------+--------------------+---------+-------------+---------+----------+
İşte sıram:
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 |
+-------+----------+-------------+-----------+---------+------------------------+---------------------+--------+----------+----------------+-------------------------+---------------------+--------+---------+
Myqueue'ya bazı öğeleri sıkıştırın:
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 sıradaki mesajları görüyor:
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
mesajları görmek için ya da sonuna gelen iletileri sıradan çıkarma ve sonra cepheye bunları yeniden kuyruklandırabilir için. Mesajları sıralı hale getirmek yerine sadece görmenin bir yolu var mı?
rabbitmqadmin
web tabanlı API bağlanır sudo burada gerekli?
requeue=True
Bir RabbitMQ kuyruğundaki mesajların yerel dosyalara dökülmesine ve mesajların orijinal sıralarına göre yeniden sıralanmasına izin veren rabbitmq-dump-queue yazdım .
Örnek kullanım (sıranın ilk 50 mesajını dökmek için incoming_1
):
rabbitmq-dump-queue -url="amqp://user:password@rabbitmq.example.com:5672/" -queue=incoming_1 -max-messages=50 -output-dir=/tmp
sayım veya mesaj almak için RabbitMQ API'yi kullanabilirsiniz:
/api/queues/vhost/name/get
Bir kuyruktan mesaj alın. (Kuyruğun durumunu değiştireceğinden bu bir HTTP GET değildir.) Şuna benzer bir gövde göndermelisiniz:
{"count":5,"requeue":true,"encoding":"auto","truncate":50000}
count, alınacak maksimum ileti sayısını kontrol eder. Kuyruk bunları hemen sağlayamazsa bundan daha az mesaj alabilirsiniz.
requeue, mesajların kuyruktan kaldırılıp kaldırılmayacağını belirler. Yeniden kuyruğa alma doğruysa, yeniden sıralanacaklar - ancak yeniden gönderilen bayrakları ayarlanacaktır. kodlama ya "otomatik" olmalıdır (bu durumda yük, UTF-8 geçerliyse ve base64 kodlanmışsa bir dize olarak döndürülür) veya "base64" (bu durumda yük her zaman base64 olarak kodlanır). Kesik varsa, verilen boyuttan (bayt cinsinden) daha büyükse ileti yükünü keser. kesme isteğe bağlıdır; diğer tüm anahtarlar zorunludur.
Lütfen, HTTP API'deki yayınlama / alma yollarının test mesajlarını, teşhisleri vb. Enjekte etmek için tasarlandığını - güvenilir teslimatı gerçekleştirmediklerini ve bu nedenle mesajlaşma için genel bir API'den ziyade bir sistem yöneticisi aracı olarak görülmeleri gerektiğini unutmayın.
http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v3_1_3/priv/www/api/index.html
buna biraz geç, ancak evet rabbitmq, gelen mesajları bir günlükte görmenizi sağlayan yerleşik bir izleyiciye sahiptir. Etkinleştirildiğinde, yalnızca tail -f /var/tmp/rabbitmq-tracing/.log
(mac'ta) mesajları izleyebilirsiniz.
ayrıntılı açıklama burada http://www.mikeobrien.net/blog/tracing-rabbitmq-messages
Bir kuyruktan birden fazla mesaj istiyorsanız, örneğin 10 mesaj, kullanılacak komut şudur:
rabbitmqadmin get queue=<QueueName> ackmode=ack_requeue_true count=10
Eğer istemiyorsan mesajlar, sadece değişimi requeued ackmode
için ack_requeue_false
.
ackmode=ack_requeue_true
, requeue
diğer cevaplarda belirtildiği gibi böyle bir seçenek yok