コマンドラインから直接RabbitMQメッセージの内容を表示することはできますか?


101

コマンドラインから直接RabbitMQメッセージの内容を表示することはできますか?

sudo rabbitmqctl list_queues キューをリストします。

次のようなコマンドはありますsudo rabbitmqctl list_queue_messages <queue_name>か?


1
Linuxの上rabbitmqadminインストールについてstackoverflow.com/questions/36336071/...
アレクセイ低木

回答:


105

管理プラグインを有効にする必要があります。

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

キューから最初のメッセージを受け取ります。


1
ありがとう、私のために働きます!これは貢献するかもしれません:デフォルトではrabbitmqadminはどこからでも呼び出すことができません。/var/lib/rabbitmq/mnesia/rabbit@NODENAME-plugins-expand/rabbitmq_management-3.1.3/priv/www/cliにあります。そのための権限を修正する必要があり(chmod 755 rabbitmqadmin)、おそらく/ usr / local / binにコピーする必要があります。rabbitmq.com/ management
Scherbius.com

いいえ、リンクからダウンロードして、パスのどこかに置くことでアクセス可能にすることができます。
robthewolf

7
メッセージを表示するだけで、キューからrequeue=falserabbitmqadmin get queue=<QueueName>
取り出さ

1
メッセージを再キューイングすると再配信フラグが設定されるため、後続のコンシューマが同じメッセージを受信しないことに注意してください
aKiRa

Webインターフェースでメッセージの内容を表示できますか?
gstackoverflow 2017

40

キューの内容を取得するために使用するコマンドは次のとおりです。

https://www.rabbitmq.com/management-cli.htmlを使用したFedora linux上のRabbitMQバージョン3.1.5

ここに私の交換があります:

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

これが私のキューです:

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に詰め込みます。

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はキュー内のメッセージを参照します。

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        |
+-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+

2
sudo python rabbitmqadmin get queue=myqueue requeue=true count=10メッセージを表示するか、メッセージを最後からデキューしてから、先頭に再キューイングするコマンドです。メッセージをデキューするのではなく、単に表示する方法はありますか?
Akshay Hazari

getおよびrequeue = trueは、メッセージがデキューされて表示され、再度キューに入れられる(pushed_back to front)ことを本質的に示していると思います。
Akshay Hazari

1
rabbitmqadminWebベースのAPIに接続し、sudoをここで必要とされていますか?
Richlv 2017年

なぜですかrequeue=True
スティーブン、

20

私はrabbitmq-dump-queueを書きましたのローカルファイルへのRabbitMQキューからメッセージをダンプし、元の順序でメッセージを再キューイングできます。

使用例(queueの最初の50メッセージをダンプするためincoming_1):

rabbitmq-dump-queue -url="amqp://user:password@rabbitmq.example.com:5672/" -queue=incoming_1 -max-messages=50 -output-dir=/tmp

10

RabbitMQ APIを使用して、カウントまたはメッセージを取得できます。

/api/queues/vhost/name/get

キューからメッセージを取得します。(これは、キューの状態を変更するため、HTTP GETではありません。)次のような本文を投稿する必要があります。

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

countは、取得するメッセージの最大数を制御します。キューがすぐにメッセージを提供できない場合は、これよりも少ないメッセージを受け取る可能性があります。

requeueは、メッセージがキューから削除されるかどうかを決定します。再キューイングがtrueの場合、それらは再キューイングされますが、再配信フラグが設定されます。エンコーディングは、「auto」(有効なUTF-8であればペイロードは文字列として返され、それ以外の場合はbase64でエンコードされます)または「base64」(ペイロードは常にbase64でエンコードされます)でなければなりません。truncateが存在する場合、指定されたサイズ(バイト単位)より大きい場合、メッセージペイロードを切り捨てます。truncateはオプションです。他のすべてのキーは必須です。

HTTP APIのパブリッシュ/ゲットパスは、テストメッセージや診断などを注入することを目的としていることに注意してください。これらは信頼できる配信を実装していないため、メッセージング用の一般的なAPIではなく、sysadminのツールとして扱う必要があります。

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


4

これには少し遅れますが、はい、rabbitmqには、受信したメッセージをログで確認できるトレーサーが組み込まれています。有効にすると、tail -f /var/tmp/rabbitmq-tracing/.log(Macで)メッセージを監視できます。

詳細な説明はこちらhttp://www.mikeobrien.net/blog/tracing-rabbitmq-messages


3
リンクが壊れています。ミラー:web.archive.org/web/20160319074032/http : //www.mikeobrien.net/…。素敵なカスタムエラーページBTW :)
xtreak

0

キューから複数のメッセージ、たとえば10メッセージが必要な場合、使用するコマンドは次のとおりです。

rabbitmqadmin get queue=<QueueName> ackmode=ack_requeue_true count=10

メッセージを再度キューに入れたくない場合は、に変更ackmodeしてくださいack_requeue_false

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.