第26章 実行中のルートの編集
概要
プロジェクトのルーティングコンテキストを変更せずに、実行中のルートへの変更を試すことができます。
これを行うには、以下を行います。
JMX Navigator ビューで、実行中のルーティングコンテキストの Edit Routes オプションを有効にします。
これにより、ルートエディターでその in-memory モデル (Remote CamelContext:<camelContextId>) が開きます。
ルートエディターで、ルーティングコンテキストの in-memory モデルを変更します。同時に、Camel デバッガーとそのすべての機能を使用するために、関連するノードにブレークポイントを設定できます。
in-memory インメモリーモデルを編集して、ノードの追加、削除、または再配置、既存ノードのプロパティーの追加または削除、既存ノードに設定されているプロパティー値の変更を行えます。実行中のコンテキストを更新して Debug パースペクティブに結果を表示するには、in-memory モデルに加えた変更を保存する必要があります。
- JMX Navigator ビューで、実行中のルーティングコンテキストにメッセージをドロップするか、タイマー、ActiveMQ、ファイル、またはその他の継続的な入力ノードからメッセージが到着するのを待ちます。
- Debug パースペクティブでは、結果を評価し、Camel デバッガーを使用してルーティングコンテキストの詳細を把握します。
実行中のルートの変更および結果の評価
- JMX Navigator ビューで、編集するルートが含まれるルーティングコンテキストを選択します。
選択したルーティングコンテキストを右クリックしてコンテキストメニューを開き、Edit Routes を選択します。
ルートエディターがルーティングコンテキストの in-memory モデル (Remote CamelContext:<contextId>) を開き、コンテキスト内のすべてのルートを表示します。以下はその例です。
注記<contextId>
は、プロジェクトのルーティングコンテキストのxml
ファイルのcamelContext
要素の ID です。FuseContent Based Router のビルトインテンプレートをベースとするこの例では、ID は cbr-example-context
です。-
2章ルートエディターを使用したルーティングコンテキストの編集 の説明に従ってルートを編集し、File
Save を選択して in-memory モデルに加えた変更を保存し、実行中のルーティングコンテキストを更新します。 - 14章ブレークポイントの設定 の説明に従って、関連するノードにブレークポイントを設定します。
JMX Navigator ビューで、実行中のルーティングコンテキストの入力ノードにメッセージをドロップします。
プロジェクトにテストメッセージが含まれていない場合は、「ルートトレース用テストメッセージの作成」 の説明に従って作成できます。
- Yes をクリックし、Debug パースペクティブに切り替えます。
Camel デバッガーで、通常どおり (15章Camel デバッガーの実行 を参照) ブレークポイントを介してメッセージをステップし、変更によって生成される結果を確認します。
Camel デバッガーは、Edit Routes モードでも通常のデバッグモードと同じように動作するため、メッセージがルーティングコンテキストを通過している間、Camel デバッガーの任意の機能を使用できます。
注記メッセージがルーティングコンテキストの最後に到達すると、デバッガーが停止します。デバッグを続行するには、Fuse Integration パースペクティブに戻し、JMX Navigator ビューの入力ノードに別のメッセージをドロップします。そうするたびに、ツールは Debug パースペクティブへの切り替えを確認するように要求します。
注記ルート編集セッション中に、実行中のルーティングコンテキストへの接続が失われる可能性があります。この場合は、JMX Navigator ビューに次のように表示されます: Local Processes
maven[xxxx][Disconnected]。セッションを続行するには、実行中のルーティングコンテキストに再接続し、JMX Navigator ビューでこれを選択してから Edit Routes を再度選択する必要があります。
ルート編集セッションの終了
- Debug パースペクティブの Debug ビューで、Remote Camel Debug - camelContext--<contextId>--xxxxxxxxxxxxxxxxxx.xml [Remote Camel Context] スレッドを選択し、メニューバーの をクリックしてデバッグセッションを終了します。
- コンソール ビューのメニューバーで をクリックし、ルーティングコンテキストを終了します。
- コンソール出力をクリアする場合は、Console ビューのメニューバーの をクリックします。
- Fuse Integration パースペクティブに切り替え、ルートエディターで Remote CamelContext:<contextId> タブの をクリックし、ルーティングコンテキストファイルのメモリー内モデルを閉じます。