WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

Resequence ノード

Resequence ノードを使用して、着信メッセージのグループ (複数可) がメッセージ・フロー内で伝搬されるシーケンスを制御します。

このトピックには、以下のセクションが含まれています。

目的

Resequence ノードは、着信メッセージのグループ (複数可) がメッセージ・フロー内でこのノードを介して伝搬されるシーケンスを制御します。

Resequence ノードを使用すると、メッセージ内のシーケンス番号に基づいて、メッセージのグループを順次オーダーに並び替えることができます。 各メッセージには、シーケンス番号を含める必要があります。 この番号は、任意の正または負の整数で指定できます。 シーケンス番号は、ノードの「シーケンス番号へのパス」プロパティーに 定義された XPath 式によって計算されます。シーケンス番号は、Sequence ノードによりメッセージに追加されたものである場合があります。

Resequence ノードは、複数のシーケンス・グループを相互に独立した形で再配列できますが、シーケンス・グループ間のメッセージを再配列することはできません。 メッセージが属するグループは、Resequence ノードのプロパティーによって判別されます。

各シーケンス・グループは、1 つの Resequence ノードだけに関連付けできます。 複数の Resequence ノードで同じ名前のシーケンス・グループを保持できますが、 これらのシーケンス・グループはそれぞれ個別のグループとして処理されます。 シーケンス・グループ同士を区別するために、実行グループ名、メッセージ・フロー名、 ノード名、およびシーケンス・グループ名の組み合わせが使用されます。

例えば、eg1 という実行グループにデプロイされる、node1 という Resequence ノードを含んだ flow1 と いうメッセージ・フローがあるとします。 group1 というシーケンス・グループを使用して、メッセージがそのメッセージ・フローに送信されます。 結果は eg1/flow1/node1/group1 です。 完全に同一のメッセージ・フローが、異なる実行グループ (例えば eg2) にある場合は、eg2/flow1/node1/group1 という結果になります。

伝搬される各メッセージが異なるシーケンス・グループに属している場合に限って、 複数のスレッドを使用してメッセージを伝搬するように Resequence ノードを構成できます。 同じシーケンス・グループに属するメッセージの場合、メッセージの伝搬には、一度に 1 つのスレッドしか使用できません。 その結果、シーケンス・グループ内のメッセージの順序は保持されますが、グループ間の順序は維持されません。

Resequence ノードで、トランザクションの中断が発生します。 ノードに着信したメッセージは、出力ターミナルに直接伝搬されません。 すべてのメッセージ (シーケンス内の次のメッセージも含む) は、 最初に内部 WebSphere® MQ キューに直列化されます。 現行のトランザクションで、メッセージの保管が行われます。 メッセージが保管されると、トランザクションは完了します。 保管されたメッセージがシーケンス内の次のメッセージである場合、これが新規トランザクション下でメッセージ・フローの下流へ伝搬されます。 データの直列化可能な部分のみが、ノードから伝搬されます。 ローカル環境、環境、および例外リストは、保持されません。

Resequence ノード以降のノードで発生した例外は、 Resequence ノードの Catch ターミナルにロールバックされます。 Catch ターミナルが他のノードに接続されていない場合は、メッセージは元の ターミナル (Out、Missing、または Expired) に再送されます。 メッセージは、バックアウトされることも、廃棄されることもありません。

Resequence ノードは、受信したすべてのメッセージを (順次受信した場合であっても)、 ダウンストリームに伝搬する前に内部キューに保管します。 メッセージ・フローは、効率的に 2 つの実行フロー (Resequence ノードの 前と後に 1 つずつ) に分割されます。 メッセージ・フローの Resequence ノードの 前にある部分の実行速度が、後にある部分の実行速度を大幅に上回る場合、 内部キューにあるメッセージの数は、処理能力を超えて増大する 可能性があります。 また、グループの最後または未着メッセージに設定された有効期限時刻も正しいタイミングで発生しません。 キューがいっぱいのときに Resequence ノードにメッセージが着信すると、 例外がスローされる原因となります。 この問題は、以下のステップを実行 することで回避できます。
  1. 制御アプリケーションが一度に送信する作業量を、確実にメッセージ・フローが 管理可能な限度内に抑えます。
  2. メッセージ・フローの 2 番目の部分が、処理用のインスタンスをより多く持てるように、追加のインスタンスを構成します。 「インスタンス」タブのプロパティーを使用して、 Resequence ノードに追加インスタンスの独自のセットを指定します。
  3. CPU に最も多くの要求を出す部分 (例えば、変換など) が Resequence ノードの 前になるように、メッセージ・フローを構成します。
  4. 大きなワークロードが一過性である場合は、内部キューでキューの最大長を大きくします。
  5. Resequence 構成可能サービスを使用して、キューを区分します。 こうすることで、Resequence ノードのインスタンスでキューがいっぱいになり、 別のインスタンスの作業が中断する状態を防ぐことができます。

Resequence ノードのさまざまな状態および状態遷移については、 Resequence ノードの状態マシンを参照してください。

Resequence ノードはパレットの「ルーティング」ドロワーに含まれていて、WebSphere Message Broker Toolkit 内では次のアイコンによって表されます。

Resequence ノード・アイコン

メッセージ・フロー内での Resequence ノードの使用

Resequence ノードの使用法については、次のサンプルを参照してください。

サンプルに関する情報は、WebSphere Message Broker Toolkit に統合されているインフォメーション・センター、またはオンライン・インフォメーション・センターを使用する場合にのみ表示できます。 サンプルは、WebSphere Message Broker Toolkit に統合されているインフォメーション・センターを使用する場合にのみ実行できます。

Resequence ノードの構成

Resequence ノードのインスタンスをメッセージ・フローに入れると、それを構成することができます。メッセージ・フロー・ノードの構成を参照してください。 ノードのプロパティーが、「プロパティー」ビューに表示されます。

デフォルト値が定義されていないすべての必須プロパティーには、アスタリスクのマークが付きます。

以下のように、Resequence ノードを構成します。

  1. オプション: 「説明」タブで、簡略説明詳細説明、あるいはその両方を入力します。 このタブで、ノードを名前変更することもできます。
  2. 「基本」タブで、メッセージ・シーケンスの制御方法を決定するプロパティーを設定します。
    • シーケンス番号へのパス」プロパティーを使用して、 メッセージのシーケンス番号の計算に使用する XPath 式を指定します。 XPath 式で、シーケンス番号を計算することも、メッセージ内の整数フィールドを指示することもできます。 またメッセージには、オプションのシーケンス・グループ ID を含めることもできます。 このプロパティーは必須です。
    • 「シーケンス・グループ ID へのパス」プロパティーを使用して、シーケンス・グループ ID の場所を指定します。 その位置は、XPath 式として指定します。 グループ ID が同じメッセージは、同じシーケンス・グループに属していると見なされます。
    • 「シーケンス定義の開始」プロパティーを使用して、各グループの最初のシーケンス番号を指定します。
      • 「リテラル」を選択して、リテラル・シーケンス番号を指定します。この番号には、任意の正または負の数値が可能です。 指定のシーケンス番号を持つメッセージが到着すると、メッセージは伝搬されます。
      • 「述部」を選択して、評価結果が True または False になる XPath 式を指定します (その結果によって、そのメッセージがシーケンスの先頭かどうかを判別できます)。

        式の評価結果が False の間は、メッセージの収集が続けられます。 メッセージの式の評価結果が True になると、そのメッセージがシーケンスの先頭になります。

        通常、XPath 式はブール値として評価されますが、他のデータ型が返される場合は、以下のようにして述部が決定されます。
        表 1.
        戻りデータ型 True False
        ブール True False
        数値 ゼロ以外の任意の値 0 または 0.0
        ストリング true と一致する任意の文字列 (大/小文字を区別しない) true と一致しない任意の文字列 (大/小文字を区別しない)
        NodeSet しない 常時

        メッセージの式の評価結果が True になると (つまり、そのメッセージがシーケンスの開始であることが判別されると)、ノードは、そのメッセージのシーケンス番号が、その時点までに収集されたメッセージの最小のシーケンス番号であることを確認します。 それよりも小さいシーケンス番号が見つかると、例外がスローされます。

        評価結果が True になった最初のメッセージが正常に処理されると、後続メッセージの XPath 式はチェックされなくなります。 シーケンスの開始であると判別されたメッセージのシーケンス番号よりも小さいシーケンス番号のメッセージが着信すると、例外がスローされます。

      • 「自動」を選択して、最も低位の番号を持つメッセージを使用するまでに、メッセージの収集を続ける制限時間を指定します。
    • 「シーケンス定義の終了」プロパティーを使用して、各シーケンス・グループがいつ完了するかを指定します。
      • 「リテラル」を選択して、リテラル・シーケンス番号を指定します。 「シーケンス定義の開始」プロパティーの値以上の正または負の数値を指定できます。 指定したシーケンス番号を持つメッセージが着信しても、シーケンス・グループは 開いたままの状態で、「未着メッセージ・タイムアウト」プロパティーの 有効期限が切れるまで、未着メッセージを待ち続けます。 その時間内 (つまり、シーケンス・グループが閉じる前) に着信するメッセージは、そのグループに組み込まれます (ただし、重複メッセージや許容範囲外のメッセージは除きます)。 シーケンス・グループが閉じると、そのグループの新しい着信メッセージは、そのグループの新しいインスタンスに属するメッセージとして処理されます。
      • 「述部」を選択して、評価結果が True または False になる XPath 式を指定します (その結果によって、そのメッセージがシーケンスの末尾かどうかを判別できます)。

        通常、XPath 式はブール値として評価されますが、他のデータ型が返される場合は、表 1 のようにして述部が決定されます。

        述部の評価結果が True になると、そのメッセージのシーケンス番号が「シーケンス定義の終了」プロパティーに割り当てられます。

        シーケンスの終了の述部が True に設定されたメッセージを受け取っても、シーケンス・グループは開いたままの状態で、「欠落しているメッセージ・タイムアウト」プロパティーの有効期限が切れるまで、欠落メッセージを待ち続けます。 その時間内 (つまり、シーケンス・グループが閉じる前) に着信するメッセージは、そのグループに組み込まれます (ただし、重複メッセージや許容範囲外のメッセージは除きます)。 シーケンス・グループが閉じると、そのグループの新しい着信メッセージは、そのグループの新しいインスタンスに属するメッセージとして処理されます。

        シーケンスの終了の述部が True に設定されたメッセージが着信した場合に、そのメッセージのシーケンス番号が、それより前に着信していたメッセージのシーケンス番号よりも小さい場合は、例外がスローされます。

      • 「自動」を選択して、ノードのタイムアウト期間を指定します。 このオプションは、シーケンス・グループが閉じるまでに、ノードが空のキューにメッセージが到着するのを待機する長さ (秒単位) を指定します。 このオプションは、シーケンス内における最後の番号を判別できないアプリケーションで役に立ちます。 このタイマーは、伝搬を待機しているキューにメッセージが何もない場合に開始されます。 タイムアウト期間に達する前に新規メッセージが到達すると、タイマーは取り消されます。 指定の期間が終了する前に新規メッセージが到着しないと、このシーケンス・グループは閉じられて、このグループに対するその後のメッセージは、新しいグループの一部であると見なされます。
    • 「未着メッセージ・タイムアウト」プロパティーを使用して、ノードが、シーケンス内の次のメッセージに移動するまでに、シーケンス内のそのメッセージを待機する長さ (秒単位) を指定します。 指定の制限時間内に到達するメッセージは、Out ターミナルに順次オーダーで伝搬されます。

      指定の制限時間を過ぎると、メッセージは Expire ターミナルに順次オーダーで伝搬されます。 そのシーケンス・グループ内のその後のメッセージも、Expire ターミナルにルーティングされます。 最終的に未着メッセージが到着すると、Missing ターミナルに伝搬されます。

  3. 「拡張」タブで以下のようにします。
    • 「持続モード」プロパティーを使用して、メッセージの不完全なシーケンスを永続的に保管するかどうかを指定します。
    • 「構成可能サービス」プロパティーを使用して、Resequence ノードの指定のプロパティーを指定変更する Resequence 構成可能サービスの名前を指定します。
  4. オプション: 「インスタンス」 タブで、ノードで使用できるその他のインスタンス (スレッド) を示すプロパティーの値を設定します。

    伝搬される各メッセージが異なるシーケンス・グループに属している場合に限って、 同じ Resequence ノードから複数のスレッドを使用してメッセージを伝搬することができます。 同じシーケンス・グループに属するメッセージの場合、メッセージの伝搬には、一度に 1 つのスレッドしか使用できません。 その結果、シーケンス・グループ内のメッセージの順序は保持されますが、グループ間の順序は維持されません。

    追加インスタンスの指定については詳しくは、構成可能な「メッセージ・フロー」プロパティーを参照してください。

ターミナルおよびプロパティー

Resequence ノードのターミナルについては、次の表に説明されています。

ターミナル 説明
In 着信メッセージ・アセンブリーがノードに到着する入力ターミナル。
Failure エラーが発生した場合にメッセージがルーティングされる出力ターミナル。 この値には、再試行処理が原因の障害も含まれます。
Out 出力メッセージがデフォルトで伝搬される出力ターミナル。
Expire ノードがメッセージの到着を待機している間にタイムアウトが発生した場合に、メッセージがルーティングされる出力ターミナル。 同一のグループ内の後続のすべてのメッセージもこのターミナルに伝搬されます。
Missing (タイムアウトが生じた原因となった) 未着メッセージがノードにその後に到着する場合に、ルーティング先となる出力ターミナル。
Catch 例外がダウンストリームで発行され、ノードによってキャッチされた場合に、メッセージがルーティングされる出力ターミナル。 例外がキャッチされるのは、このターミナルが接続されている場合のみです。

以下の表は、ノード・プロパティーについて説明しています。 M の見出しの列は、プロパティーが必須 かどうかを示します (デフォルトが定義されていない場合に値を入力する必要がある場合、アスタリスクのマークが付きます)。C の見出しの列は、プロパティーが構成可能 (メッセージ・フローを BAR ファイルに追加してデプロイするとき、値を変更できる) かどうかを示します。

Resequence ノードの「説明」プロパティーについては、次の表に説明されています。

プロパティー M C デフォルト 説明
ノード名 いいえ いいえ Resequence ノードの名前。
簡略説明 いいえ いいえ   ノードの簡単な説明
詳細説明 いいえ いいえ   メッセージ・フロー内のノードの目的を説明するテキスト

Resequence ノードの基本プロパティーについては、次の表に説明されています。

プロパティー M C デフォルト 説明
シーケンス番号へのパス はい いいえ   メッセージのシーケンス番号を計算する XPath 式。
シーケンス・グループ ID へのパス いいえ いいえ   シーケンス・グループ ID を計算する XPath 式。 グループ ID が同じメッセージは、同じシーケンス・グループに属していると見なされます。 このプロパティーは、Collector ノードにおける「相関パス」プロパティーと同じ方法で機能します。
シーケンス定義の開始 はい いいえ リテラル、0 各グループの最初のシーケンス番号を指定します。 有効な値は以下のとおりです。
  • リテラル」および数値
  • 述部」および XPath
  • 自動」および時間 (秒単位)
このプロパティーが「自動」に設定されていると、 関連付けられた時間が、Resequence 構成可能サービスの「startSequenceSeconds」プロパティーの値 (設定されている場合) によって指定変更されます。
シーケンス定義の終わり はい いいえ 自動 各シーケンス・グループがいつ完了するかを指定します。 有効な値は以下のとおりです。
  • リテラル」および数値
  • 述部」および XPath
  • 自動」および時間 (秒単位)
このプロパティーが「自動」に設定されていると、 関連付けられた時間が、Resequence 構成可能サービスの「endSequenceSeconds」プロパティーの値 (設定されている場合) によって指定変更されます。
未着メッセージ・タイムアウト (秒) いいえ いいえ   ノードが、シーケンス内の次のメッセージに移動するまでに、そのメッセージを待機する長さ (秒単位) を指定します。 このプロパティーは、Resequence 構成可能サービスで「未着メッセージ・タイムアウト」プロパティー (設定されている場合) によって指定変更されます。
Resequence ノードの「インスタンス」プロパティーについては、次の表に説明されています。 これらのプロパティーの詳細については、構成可能な「メッセージ・フロー」プロパティーを参照してください。
プロパティー M C デフォルト 説明
追加インスタンス・プール いいえ はい メッセージ・フローに関連付けられたプールの使用 追加インスタンスの取得元のプール。
  • 「メッセージ・フローに関連付けられたプールの使用」 を選択すると、メッセージ・フロー・プールから追加インスタンスが取得されます。
  • 「ノードに関連付けられたプールの使用」を選択すると、追加インスタンスは「追加インスタンス」プロパティーで指定された数値をもとに、ノードの追加インスタンスから割り当てられます。
追加インスタンス いいえ はい 0 「追加インスタンス・プール」プロパティーが「ノードに関連付けられたプールの使用」に設定されている場合に、ノードが開始できる追加インスタンスの数。

Resequence ノードの拡張プロパティーについては、次の表に説明されています。

プロパティー M C デフォルト 説明
持続モード はい いいえ 非持続 メッセージの不完全なシーケンスを永続的に保管するかどうかを指定します。 有効なオプションは、以下のとおりです。
  • 非持続
  • 持続
構成可能サービス いいえ はい 設定なし このプロパティーは、Resequence ノードが使用する Resequence 構成可能サービスの名前を指定します。

Resequence 構成可能サービスによって設定されるプロパティーは、Resequence ノードに設定された対応するプロパティーを指定変更します。

この構成可能サービスによって設定可能なプロパティーの詳細については、構成可能サービスのプロパティーを参照してください。

ノードのモニター・プロパティーが、次の表に説明されています。
プロパティー M C デフォルト 説明
イベント いいえ いいえ なし ノードに対して定義したイベントが、このタブに表示されます。 デフォルトでは、メッセージ・フローのどのノードに対してもモニター・イベントは定義されません。 ノードのモニター・イベントを作成、変更、または削除するには、「追加」「編集」、および「削除」を使用します。詳しくは、モニター・プロパティーを使用したモニター・イベント・ソースの構成を参照してください。

「使用可能」チェック・ボックスを選択またはクリアすることによって、ここに表示されているイベントを使用可能および使用不可に設定できます。

以下のノードでは、モニター・プロパティーを使用してトランザクション・イベントを構成することはできません。 代わりにモニター・プロファイルを使用してください。モニター・プロファイルを使用したモニター・イベント・ソースの構成を参照してください。
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        最終更新:
        
        最終更新: 2015-02-28 17:48:38


参照トピック参照トピック | バージョン 8.0.0.5 | bc28000_