「WebSphere MQ へのレコード配布: 一方向」パターンの経路サブフローに関する詳細。
経路サブフローの動作は、「ルーティング」パターン・パラメーターの値によって次のように異なります。
「ルーティングなし」が選択されている場合、単一の MQOutput ノードが作成され、 このノードが「出力キュー・マネージャー」および「出力キュー」パターン・パラメーターの値で構成されます。 ルーティング・フローは、Passthrough ノードを含むサブフローです。 このサブフローに他のすべての種類のルーティング・サブフローとの一貫性を持たせるため、デフォルト・ターミナルと経路ターミナルが含まれていますが、単一の経路ターミナルだけが使用されます。
経路を定義する、以下の 4 つのパラメーターから成るグループです。
定義される経路ごとに、経路サブフローおよび MQOutput ノードの Output ターミナルが作成され、接続されます。
経路サブフローには、条件 KeyLocation = Key Value を満たす最初の Output ターミナルにルーティングするフィルターで構成される Route ノードが含まれます。 メッセージ・エレメントがどの経路にも一致しない場合、ブローカー環境ツリー内の変数にこの状態が記録され、メッセージは Default ターミナルに渡されます。
キーの位置を定義する XPath 式にネーム・スペース修飾子が含まれる場合、ネーム・スペースを定義するタグをネーム・スペース表に追加する必要があります。
以下のメッセージに似た警告が Route ノードに関して出されることがあります。 「フィルター・テーブル: フィルター・パターン: Key location = Key value XPath 中に element_name スキーマ・エレメントが見つかりませんでした。」 この警告によって、パターン・インスタンスをデプロイして実行するときに問題が発生することはありません。
「経路の指定」を選択して、異なる多数の経路を指定できます。
この値を選択した場合、メッセージ・データの値を使ってキュー・マネージャーおよびキューをデータベース・ルーティング・テーブルから検索することにより、経路が決定されます。 効率を上げるために、ルーティング・テーブルに直接アクセスする代わりに、それを読み取ってメモリー内のキャッシュに入れます。
この値が選択されている場合、経路サブフロー用に単一の Output ターミナルが作成されます。この Output ターミナルは、検索によってブローカー環境ツリーに置かれた宛先から成るリストを選択するように構成された単一の MQOutput ノードに接続されます。
経路サブフローは、CacheQueueTable.valid 共有行変数の値が NULL に設定されているかどうか確認することにより、 キャッシュの最新表示が必要かどうかを確認します。 この変数が NULL に設定されるのは、フローが開始され、「キャッシュの最新表示」が有効で、最新表示メッセージが「最新表示キュー」に既に送信された場合です。 最新表示メッセージはこの値を NULL に設定します。
キャッシュの最新表示が必要な場合、(「ルーティング・データ・ソース」パターン・パラメーターで指定されている) データ・ソースの ROUTING_TABLE テーブルが検索されて、このフローのルーティング・コンテキストに一致するすべての行が検出されます。 ルーティング・コンテキストは「ルーティング・データ・コンテキスト」パターン・パラメーターによって定義され、ROUTING_CONTEXT フィールドがこのパラメーターとマッチするような行がメモリー内のキャッシュに読み取られます。 キャッシュが不整合状態にある間の検索を防ぐために、これはアトミックに実行されます。
キャッシュ・データの構造は次のとおりです。
VARIABLE1, VARIABLE2, QUEUE_MANAGER, QUEUE_NAME
検索は、パターン・パラメーターとして定義された ESQL 式を使用して、メッセージ・エレメントから 1 つまたは 2 つのキー値を抽出することによって実行されます。 この検索は以下の形式のステートメントを使って定義されます。
SET KEY = <pattern parameter>
ルーティング・データから (1 つまたは複数の) 行を選択するために単一のキーが指定される場合、以下のような WHERE 節を使って選択します。
WHERE S.VARIABLE1 = KEY1
2 番目のキーが指定される場合、以下のような WHERE 節を使って選択します。
WHERE S.VARIABLE1 = KEY1 and S.VARIABLE2 = KEY2
この選択によって、キュー・マネージャーおよびキューは MQOutput ノードによって使用される宛先のリストの中に設定されます。 複数の行が返される可能性があり、宛先データには、選択されたすべての宛先が含まれます。 一致が見つからない場合、ルーティング・エラーが発生し、経路サブフローの Failure ターミナルにメッセージが渡されます。