検索

第7章 ルーティングコンテキストのデバッグ

download PDF

このチュートリアルでは、Camel デバッガーを使用して、ローカルで実行されているルーティングコンテキストの論理エラーを見つける方法を示します。

ゴール

このチュートリアルでは、次のタスクを完了します。

  • 2 つの経路の対象ノードにブレークポイントを設定します
  • デバッグパースペクティブで、経路をステップスルーし、メッセージ変数の値を調べます
  • メッセージ変数の値を変更し、効果を観察しながら、経路をもう一度ステップスルーします

前提条件

このチュートリアルを開始するには、次のいずれかの結果である ZooOrderApp プロジェクトが必要です。

ブレークポイントの設定

デバッガーでは、条件付きブレークポイントと無条件ブレークポイントの両方を設定できます。このチュートリアルでは、無条件のブレークポイントのみを設定します。条件付きブレークポイント (デバッグセッション中に特定の条件が満たされたときにトリガーされる) を設定する方法は、Tooling User Guide を参照してください。

無条件のブレークポイントを設定するには:

  1. 必要に応じて、ルートエディターで ZooOrderApp/src/main/resources/OSGI-INF/blueprint/blueprint.xml を開きます。
  2. Project ExplorerCamel Contexts src/main/resources/OSGI-INF/blueprint/blueprint.xml を展開して両方のルートエントリーを公開します。
  3. Route_route1 エントリーをダブルクリックして、Design タブで Route_route1 にフォーカスを切り替えます。
  4. キャンバスで Choice_choice1 ノードを選択し、その red icon アイコンをクリックし、無条件のブレークポイントを設定します。

    BPnodeIcons
    forward nav
    BPnodeIcons2
    注記

    ルートエディターで、ノードの gray icon アイコンまたは delete icon アイコンをそれぞれクリックすることにより、特定のブレークポイントを無効または削除できます。キャンバスを右クリックし、Delete all breakpoints を選択すると、設定したすべてのブレークポイントを削除することができます。

  5. 以下の Route_Route1 ノードに無条件ブレークポイントを設定します。

    • Log_log1
    • SetHeader_setHeader1
    • To_Invalid
    • Log_log2
    • SetHeader_setHeader2
    • To_Fulfill
  6. Project Explorer で、src/main/resources/OSGI-INF/blueprint の下にある Route_route2 をダブルクリックして、キャンバスで Route_route2 を開きます。
  7. 以下の Route_Route2 ノードに無条件ブレークポイントを設定します。

    • Choice_choice2
    • SetHeader_setHead_usa
    • Log_usa
    • To_US
    • SetHeader_setHead_ger
    • Log_ger
    • To_GER

ルーティングコンテキストのステップスルー

次の 2 つの方法でルーティングコンテキストをステップスルーできます。

  • Step over ( Step Over icon ) - ブレークポイントに関係なく、ルーティングコンテキストで実行の次のノードにジャンプします。
  • Resume ( Resume icon ) - ルーティングコンテキスト内の次のアクティブなブレークポイントにジャンプします。

    1. Project ExplorerZooOrderApp プロジェクトの Camel Contexts フォルダーを展開し、blueprint.xml ファイルを公開します。
    2. blueprint.xml ファイルを右クリックしてコンテキストメニューを開き、Debug As Local Camel Context (without tests) をクリックします。

      Camel デバッガーは、最初に検出したブレークポイントで実行を一時停止し、今すぐ Debug パースペクティブを開くかどうかを尋ねます。

      tutCnfrmPerspSwitch
    3. Yes をクリックします。

      注記

      No をクリックすると、確認ペインがさらに数回表示されます。3 回目の拒否後、それは消え、Camel デバッガーは実行を再開します。この時点でデバッガーを操作するには、Window Open Perspective →> Debug をクリックして、Debug パースペクティブを開く必要があります。

      Debug ビューに示されるように、ルーティングコンテキストが _choice1 in _route1 [blueprint.xml] で一時停止された状態で Debug パースペクティブが開きます。

      tutDebugPerspOpen1
      注記

      ブレークポイントは、デバッガーが自動的に再開する前に最大 5 分間保持され、次のブレークポイントまたはルーティングコンテキストの最後のいずれかに移動します。

    4. Variables ビューで、ノードを展開して、各ノードで使用可能な変数と値を表示します。

      ルーティングコンテキストをステップ実行すると、最後のブレークポイント以降に値が変更された変数が黄色で強調表示されます。変更された変数を表示するには、各ブレークポイントでノードを展開する必要がある場合があります。

    5. Resume icon をクリックし、次のブレークポイント _log2 in _route1 [blueprint.xml] に移動します。

      tutDBResumeLog2Rte1
    6. Variables ビューでノードを展開し、_choice1 in Route1 [blueprintxt.xml] の最後のブレークポイントから変更された変数を確認します。
    7. Resume icon をクリックし、次のブレークポイント _setHeader2 in Route1 [blueprint.xml] に移動します。

      _log2 in Route1 [blueprint.xml] のブレークポイントから変更された変数 (黄色で強調表示) を検証します。

    8. Debug ビューで _log2 in _route1 [blueprint.xml] をクリックし、Variables ビューにブレークポイント _log2 in _route1 [blueprint.xml] からの変数の値を投入し素早く比較します。

      Debug ビューでは、同じメッセージフロー内のブレークポイントを切り替えて、Variables ビューで変化する変数値をすばやく比較および監視できます。

      注記

      メッセージフローの長さはさまざまです。Route_route1InvalidOrders ブランチを移動するメッセージの場合、メッセージフローは短くなります。Route_route2 に続行する Route_route1ValidOrders ブランチを移動するメッセージでは、メッセージフローが長くなります。

    9. ルーティングコンテキストのステップを続行します。1 つのメッセージがルーティングコンテキストを完了し、次のメッセージがそのコンテキストに入ると、新しいメッセージフローが Debug ビューに表示され、新しいブレッドクラム ID でタグ付けされます。

      tutDBviewNextMsg

      この場合、ID-janemurpheysmbp-home-55846-1471374645179-0-3 は、ルーティングコンテキストに入った message2.xml に対応する 2 番目のメッセージフローを識別します。ブレッドクラム ID は 2 ずつ増加します。

      注記

      Exchange ID とメッセージ ID は同一であり、メッセージがルーティングコンテキストを通過する間は変更されません。それらの ID は、メッセージフローのブレッドクラム ID から作成され、1 ずつ増加します。そのため、message2.xml の場合、その ExchangeId および MessageIdID-janemurpheysmbp-home-55846-1471374645179-0-4 になります。

    10. Message3.xml がブレークポイント _choice1 in _route_route1 [blueprint.xml] に入る際に、Processor 変数を確認します。表示される値は、これまでルーティングコンテキストを移動した message1.xml および message2.xml の累積メトリクスです。

      tutMsg3Choice1Stats

      タイミングメトリックはミリ秒単位です。

    11. ルーティングコンテキストを介して各メッセージのステップを続行し、各処理ステップで変数とコンソール出力を調べます。Message6.xml がブレークポイント To_GER in Route2 [blueprint.xml] に入ると、デバッガーはパンくずスレッドのシャットダウンを開始します。
    12. メニューバーで Terminate icon をクリックし、Camel デバッガーを終了します。コンソールは終了しますが、手動で出力をクリアする必要があります。

      注記

      Debug ビューの Camel Context ノードでスレッドまたはエンドポイントを選択した状態で、 Terminate icon をクリックする必要があります。2 回 - 最初にスレッドまたはエンドポイントを終了し、2 番目に Camel Context、つまりセッションを終了します。

    13. メニューバーで tutDebugPersp を右クリックし、コンテキストメニューを開き、Close を選択して Debug パースペクティブを閉じます。

      CodeReady Studio は、Camel デバッガーを起動したパースペクティブに自動的に戻ります。

    14. Project Explorer で、プロジェクトを右クリックし、Refresh を選択して表示を更新します。

      注記

      すべてのメッセージがルーティングコンテキストを移動する前にセッションを途中で終了した場合、 ZooOrderApp/src/data フォルダーに message3.xml.camelLock のようなメッセージが表示されることがあります。プロジェクトでデバッガーを再度実行する前に、これを削除する必要があります。これを行うには、.camelLock メッセージをダブルクリックしてコンテキストメニューを開き、Delete を選択します。求められたら、OK をクリックして削除を確認します。

    15. ZooOrderApp/target/messages/ ディレクトリーを展開して、メッセージが予想される宛先に配信されていることを確認します。

      tutDualCBRrteVerify

すべてのブレークポイントを設定して有効にして、ルーティングコンテキストをそのままにします。

変数の値を変更する

このセクションでは、ウォッチリストに変数を追加して、メッセージがルーティングコンテキストを通過するときに変数の値がどのように変化するかを簡単に確認します。メッセージ本文の変数の値を変更してから、その変更がルーティングコンテキストを介したメッセージのルートにどのように影響するかを観察します。

  1. ZooOrderApp プロジェクトで Camel デバッガーを再度実行するには、blueprint.xml ファイルを右クリックして、Debug As Local Camel Context (without tests) をクリックします。
  2. Message1 が最初のブレークポイント _choice1 in _route1 [blueprint.xml] で停止した場合、変数 NodeId および RouteId(Exchange カテゴリー) ならびに MessageBody および CamelFileName(Message カテゴリー) を監視リストに追加します。

    4 つの変数のそれぞれについて:

    1. Variables ビューで、適切なカテゴリーを展開して、ターゲット変数を公開します。
    2. 変数 (ここでは Exchange カテゴリーの NodeId) を右クリックしてコンテキストメニューを開き、Watch を選択します。

      FTVarNodeIDWatch

      Expressions タブが開き、監視するように選択した変数が一覧表示されます。

      FTWatchM1NodeId
      注記

      ウォッチリストを作成すると、関心のある複数の変数の現在の値をすばやく簡単に確認できます。

  3. 4 番目のブレークポイント _Fulfill in _route1 [blueprint.xml] に到達するまで、ルーティングコンテキスト全体で message1 を確認します。
  4. Variables ビューで、 Message カテゴリーを展開します。
  5. 変数 Destination を監視リストに追加します。

    これで、Expressions ビューに次の変数が含まれるはずです。

    FTWatchM1R1toFfil
    注記
    • 変数のリストの下のペインには、選択した変数の値が表示されます。
    • Expressions ビューは、明示的に削除するまで、リストに追加したすべての変数を保持します。
  6. 残りのルーティングコンテキスト全体で message1 を確認し、次にルーティングコンテキスト全体で message2 を確認します。
  7. _choice1 in _route1 [blueprint.xml]message3 を停止します。
  8. Variables ビューで Message カテゴリーを展開し、MessageBody 変数を表示します。
  9. MessageBody を右クリックしてコンテキストメニューを開き、Change Value を選択します。

    tutVarChngMenuMsg2
  10. (これを無効な注文から有効な注文に変更するため)、quantity の値を 15 から 10 に変更します。

    tutChgVarsMsg2

    この操作により、インメモリーの値のみが変更されます (message3.xml ファイルは編集されません)。

  11. OK をクリックします。
  12. Expressions ビューに切り替え、MessageBody 変数を選択します。

    変数リストの下にあるペインには message3 のボディー全体が表示され、注文アイテムの現在の値を簡単に確認することができます。

    FTWatchM2R1toFfilVarChng
  13. Resume icon をクリックし、次のブレークポイントに移動します。

    To_Invalid へのブランチをたどる代わりに、message3To_Fulfill および Route_route2 へのブランチをたどります。

Camel デバッガーのフォーカスを絞る

ブレークポイントを無効にしてから再度有効にすることで、デバッガーのフォーカスを一時的に絞り込んでから再拡張できます。

  1. ルーティングコンテキスト全体で message4 を確認し、各ステップで Debug ビュー、Variables ビュー、および Console の出力をチェックします。
  2. _choice1 in _route1 [blueprint.xml]message4 を停止します。
  3. Breakpoints ビューに切り替え、_choice1 の下に一覧表示されるブレークポイントの横にある各チェックボックスのチェックを外します。ブレークポイントのチェックボックスをオフにすると、一時的に無効になります。

    tutBreakptsDisabled
  4. Resume icon をクリックすると、次のブレークポイントに移動します:

    tutMsg3toFulfillRte1

    デバッガーは、無効なブレークポイントをバイパスし、_FulFill in _route1 [blueprint.xml] にジャンプします。

  5. Resume icon をクリックして、もう一度次のブレークポイントに進みます。

    tutMsg3toUKRte2

    デバッガーは、_GER in _route2 [blueprint.xml] にジャンプします。

  6. Resume icon を繰り返しクリックして、ルーティングコンテキスト全体で message5 および message6 素早く確認します。
  7. Breakpoints ビューに切り替え、すべてのブレークポイントの横にあるチェックボックスをオンにして、ブレークポイントを再度有効にします。

メッセージ変数値を変更した場合の影響を確認する

デバッガーを停止し、message1 の数量変数の値を変更した結果を確認するには:

  1. ツールバーで、 Terminate icon をクリックし、Camel デバッガーを終了します:

    tutDBTerminateNorm
  2. コンソールの Clear output icon ボタンをクリックして出力をクリアします。
  3. Debug パースペクティブを閉じて、Camel デバッガーを起動したパースペクティブに戻ります。
  4. Project Explorer で、表示を更新します。
  5. ZooOrderApp/target/messages/ ディレクトリーを展開して、メッセージが想定どおりに配信されたかどうかを確認します。

    tutPETargetDestsChngedVars

    Message1 のみが invalidOrders に送信されたこと、および message3.xmlvalidOrders/Germany フォルダーに表示されることが確認できるはずです。

次のステップ

8章ルートを介したメッセージのトレースチュートリアルでは、ルーティングコンテキストを介してメッセージをトレースし、ルーティングコンテキストのパフォーマンスを最適化および微調整できる場所を決定します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.