web-dev-qa-db-ja.com

Rabbit Queueのメッセージを見ることができないのはなぜですか

私の理解が正しければ、ウサギのキューにあるメッセージを実際に見ることはできません。それらを取り出して元に戻すことはできません。rabbitmqctlを使用してキューを検査する方法はありません。

一部のデバッグコンテキストでは、現在キューにあるものを知ることが非常に役立ちます。メッセージを取得する方法はありますか?また、このプロセスを面倒にするRabbitの設計についてはどうですか?

40
archgoon

私はまだこれを個人的に使用していませんが、キューを監視できると思ったRabbitMQの管理プラグインを見ました。

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

15
Error_404

管理APIの各キューには「メッセージの取得」セクションがあります。ただし、これによりメッセージが消費されるため、破壊的なアクションになります。このメッセージをキューに再キューできるのは、メッセージの順序を犠牲にすることだけです(rabbitmqバージョン<2.7.0の場合)。

より実行可能な代替手段は、ファイアホーストレーサー http://www.rabbitmq.com/firehose.html [for rabbitmqバージョン> 2.5]を使用することです。これは基本的に、デバッグ目的でのみ、メッセージを別の交換(amq.rabbitmq.trace)に発行します。

視認性を高めるために、Firehoseの上に書かれた別のGUIがあります http://www.rabbitmq.com/blog/2011/09/09/rabbitmq-tracing-a-ui-for-the-firehose/

27
Joseph

それについては、RabbitMQまたはAMQPブローカーでキューの内容を確認できます。メッセージを消費するだけで、それらを確認しないでください。チャネルを閉じると、「実際の」消費者がメッセージを利用できるようになります。これを行うと、検査するキュー内のメッセージの順序に影響する可能性があることに注意してください。

また、RabbitMQが提供するWeb管理プラグインを使用すると、Webインターフェイスからメッセージの内容を表示できます。システムをデバッグしようとしている場合、それは非常に役立つツールです。

17
Brian Kelly

これは古いですが、これに興味がある人だけのために。 Queuesにアクセスすると、ブローカーのすべてのキューのリストがあります。

enter image description here

興味のあるキューを押し、下にスクロールしてこのセクションを見つけます

enter image description here

ここで設定する本当に重要なオプションは、Requeueオプションです。がYesに設定されている場合、この操作はメッセージを消費するため、ユーザーはそれを読み取ることができますが、キューに再登録されるため、メッセージは失われません。

11
alkis

RabbitMQに送信する前に、まず他のものに詰め込むことができます。これを行うために、メッセージキューソフトウェアを作成しました。チェックアウト http://qdb.io/

3
David Tinker

確認せずにメッセージを取得し、それを拒否することは可能ですが、それはキューからメッセージを取得しません。ただし、これは管理ツールには実装されていません。

また、メッセージはリリースされるまでロックされます。つまり、拒否されるまで他の消費者はメッセージを消費できません。

3
Patrick Sauts

キューを見るための健全な方法はありませんが、おそらく何が入っているかを監視するだけで十分です。これを行うには、中間者モニターを実装する必要があります。これには協力するクライアントが必要です。すべての送信者またはすべての受信者に異なる交換を使用するように教える必要があります。

「foo」を交換するメッセージを監視するとします。 「foo-in」(または何でも)という名前の(直接)交換を作成し、「foo」を「foo-in」の代替交換として設定し、すべての送信者に「foo-in」にメッセージを送信するように指示します。 「foo」の代わりに交換します。

キューモニタは、「foo-in」をリッスンし、すべてのメッセージを「foo」に再発行する必要があります。モニターが実行されていないときはいつでも、rabbitmqは自動的に「foo」にルーティングします。これによるパフォーマンスの低下はごくわずかです。

これはrabbitmq拡張です。代替交換の仕組みの詳細については、 http://www.rabbitmq.com/ae.html をご覧ください。もちろん、セットアップで行う方が簡単な場合は、それぞれ「foo」と「foo-out」を使用できます。

特定のキュー(再び:出力ではなくキュー入力)の監視は簡単ですが、クライアント(またはキューが永続的である場合はキューを作成するコード)を変更する必要があります。ファンアウト交換を設定し、クライアントのキューをそれにバインドしてから、交換を元のメッセージソースにバインドします。これは、もう1つのrabbitmq拡張機能です。 http://www.rabbitmq.com/e2e.html を参照してください。モニターはその交換にバインドするだけで、クライアントのキューに送信されたすべてのメッセージのコピーを取得します。

3

Web管理で最初にキュー名をクリックし、GetMessagesをクリックしてメッセージを取得できます。ここにメッセージが表示されます enter image description here

1
Debendra Dash

キュービューアを使用できます( https://www.queueviewer.com )。 RabbitMQの管理プラグインが有効になっている必要があります。

0
user568327