第8章 ルートを介したメッセージのトレース
トレースを使用すると、メッセージが 1 つのノードから別のノードにルーティングされるときにメッセージをインターセプトできます。ルーティングコンテキストを介してメッセージをトレースし、ルーティングコンテキストのパフォーマンスを最適化および微調整できる場所を確認できます。このチュートリアルでは、ルートを介してメッセージをトレースする方法を示します。
ゴール
このチュートリアルでは、次のタスクを完了します。
-
Fuse Integration パースペクティブで
ZooOrderApp
を実行する -
ZooOrderApp
でトレースを有効にする -
ZooOrderApp
にメッセージをドロップし、すべてのルートノードを通じてメッセージを追跡する
前提条件
このチュートリアルを開始するには、次のいずれかの結果である ZooOrderApp プロジェクトが必要です。
6章ルーティングコンテキストに別のルートを追加するチュートリアルを完了します。
または
-
2章環境の設定チュートリアルを完了し、「リソースファイルについて」に記載されているように、プロジェクトの
blueprint.xml
ファイルを、提供されるblueprintContexts/blueprint3.xml
ファイルに置き換える。
Fuse Integration パースペクティブの設定
メッセージトレースを容易にするためにワークスペースを設定するには:
ツールバーの右側にある ボタンをクリックし、リストから Fuse Integration を選択します。
Fuse Integration パースペクティブがデフォルトのレイアウトで開きます。
JMX Navigator タブを Terminal タブの右端にドラッグし、そこにドロップします。
この配置により、Diagram View がルーティングコンテキストのノードをグラフィカルに表示するためのスペースが増え、メッセージがルーティングコンテキストを通過する際にたどるパスを視覚的に追跡しやすくなります。
注記ルーティングコンテキストの
.xml
ファイルへのアクセスを容易にするために (特にプロジェクトが複数のコンテキストで設定される場合)、このツールは Project Explorer のCamel Contexts
フォルダーにコンテキストを一覧表示します。さらに、ルーティングコンテキスト内のすべてのルートは、コンテキストファイルエントリーのすぐ下にアイコンとして表示されます。キャンバスのルーティングコンテキストに単一のルートを表示するには、Project Explorer でそのアイコンをダブルクリックします。ルーティングコンテキスト内のすべてのルートを表示するには、コンテキストファイルエントリーをダブルクリックします。
メッセージトレースの開始
ZooOrderApp
プロジェクトでメッセージのトレースを開始するには、以下を実行します。
-
Project Explorer で
ZooOrderApp
プロジェクトを展開してsrc/main/resources/OSGI-INF/blueprint/blueprint.xml
を公開します。 -
src/main/resources/OSGI-INF/blueprint/blueprint.xml
を右クリックし、コンテキストメニューを開きます。 Run As
Local Camel Context (without tests) を選択します。 注記Local Camel Context を選択すると、
ZooOrderApp
プロジェクトの JUnit テストがまだ作成されていないため、ツールはテストのない実行に戻します。9章JUnit を使用したルートのテスト で、後でそれを行います。JMX Navigator で、
Local Processes
を展開します。-
maven [ID]
ノードを右クリックし、Connect を選択します。 ルートの要素を展開します。
Routes
ノードを右クリックし、Start Tracing を選択します。ツールは、ルーティングコンテキストのグラフィック表現を Diagram View に表示します。
すべてのメッセージフローパスを明確に表示するには、ノードをドラッグして Diagram View タブにぴったり収まるようにノードを再配置する必要があります。また、Red Hat CodeReady Studio の他のビューとタブのサイズを調整して、Diagram View タブを拡張できるようにする必要がある場合もあります。
実行中の ZooOrderApp プロジェクトにメッセージをドロップする
実行中の ZooOrderApp プロジェクトにメッセージをドロップするには:
Project Explorer で、メッセージファイル (
message1.xml
からmessage6.xml
まで) にアクセスできるようにZooOrderApp/src/data
を展開します。message1.xml
を JMX Navigatorの_context1>Endpoints>file>src/data?noop=true
ノードにドラッグアンドドロップします。メッセージがルートを通過すると、ツールは各ステップでその通過をトレースして記録します。
メッセージビューの設定
メッセージトレースを表示する前に、Messages View を更新する必要があります。また、すべてのメッセージトレースにわたって列を保持する場合は、Messages View で列を設定する必要があります。
- Messages View を開きます。
-
パネルのメニューバー右上にある
(リフレッシュボタン) をクリックし、表示に
message1.xml
のメッセージトレースを反映させます。 パネルのメニューバー の アイコンをクリックし、Configure Columns を選択して、Configure Columns ウィザードを開きます。
注記ルーティングコンテキストでメッセージに設定したメッセージヘッダー Destination がリストに表示されていることに注意してください。
アイテムを選択または選択解除することにより、Messages View にアイテムを含めたり除外したりできます。選択した個々のアイテムを強調表示してリスト内で上下に移動することにより、Messages View にアイテムが表示される列の順序を並べ替えることができます。
Configure Columns ウィザードで、次の方法で列を選択して順序付けします。
これらの列とその順序は、再度変更するまで Messages View に保持されます。
ツールのすべてのテーブルで、列方向のレイアウトを制御することができます。ドラッグ方式を使用して、表形式を一時的に再配置します。たとえば、列の境界線ルールをドラッグして、その幅を拡大または縮小します。列を非表示にするには、境界線を完全に縮小します。列ヘッダーをドラッグして、テーブル内の列を再配置します。配置を維持するには、代わりに View
メッセージトレースのステップスルー
メッセージトレースをステップスルーするには:
-
message2.xml
を JMX Navigatorの_context1>Endpoints>file>src/data?noop=true
ノードにドラッグアンドドロップします。 - Console から Messages View に切り替えます。
Messages View で (リフレッシュボタン) をクリックし、表示に
message2.xml
のメッセージトレースを反映させます。JMX Navigator でメッセージをドロップするたびに、Messages View を更新してメッセージトレースを入力する必要があります。
メッセージトレースのいずれかをクリックし、Properties ビューでその詳細を表示します。
このツールでは、メッセージトレースに関する詳細 (メッセージヘッダーが設定されている場合はそれを含む) が Properties ビューの上半分に、メッセージインスタンスのコンテンツが Properties ビュー下半分に表示されます。したがって、アプリケーションがルート内の任意のステップでヘッダーを設定する場合は、Message Details をチェックして、それらが期待どおりに設定されているかどうかを確認できます。
各メッセージを強調表示して、特定のメッセージがルートをどのように通過したか、およびルートの各ステップで期待どおりに処理されたかどうかを確認することで、メッセージインスタンスをステップスルーできます。
Diagram View を開き、ルートの関連するステップが強調表示されていることを確認します。
ツールは、Diagram View でルートを表示し、処理ステップを終了するパスにタイミングとパフォーマンスのメトリック (ミリ秒単位) をタグ付けします。メトリックの Total exchanges のみが図に表示されます。
表示されたメトリックにマウスポインターを合わせると、メッセージフローに関する追加のメトリックが表示されます。
- ステップがメッセージを処理するのにかかった平均時間
- ステップがメッセージを処理するのにかかった最大時間
- ステップがメッセージを処理するのにかかった最小時間
任意で、トレースが有効であれば、いつでも
ZooOrderApp/src/data/
の残りのメッセージを JMX Navigator の_context1>Endpoints>file>src/data?noop=true
ノードにドラッグし、ドロップすることができます。ドロップするたびに、 (更新ボタン) をクリックし、Messages View に新しいメッセージのトレースを入力することを忘れないでください。
それが終わったら:
-
JMX Navigator で
_context1
を右クリックし、Stop Tracing Context を選択します。 - Console を開いて、パネル右上の ボタンをクリックしてコンソールを停止します。 ボタンをクリックしてコンソール出力をクリアします。
-
JMX Navigator で
次のステップ
9章JUnit を使用したルートのテストチュートリアルで、プロジェクトの JUnit テストケースを作成し、プロジェクトを Local Camel Context
として実行します。