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

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

メッセージ・シーケンスの終了

Resequence ノードと Sequence ノードの「シーケンス定義の終了」プロパティーで、メッセージ・シーケンスの終了点を指定します。

Resequence ノードの使用

Resequence ノードを使用して、メッセージ・フローのメッセージを再配列する場合は、Resequence ノードの「シーケンス定義の終了」プロパティーを使用して、再配列後のメッセージ・シーケンスの終了点を定義します。 Resequence ノードでは、以下のいずれかの方法で、終了シーケンス番号を指定できます。

リテラル番号として指定する
「リテラル」を選択し、シーケンスの終了値としてリテラル・シーケンス番号を指定します。 -9223372036854775807 から 9223372036854775807 の範囲で正または負の数値を指定できます。 指定したシーケンス番号のメッセージが着信すると、シーケンス・グループが閉じます。 シーケンスに欠落メッセージがあると、シーケンス・グループは、「欠落しているメッセージ・タイムアウト」プロパティーで指定されている期間、開いたままの状態になります。
例えば、以下のようなプロパティーを指定した Resequence ノードがあるとします。
  • 「シーケンス番号へのパス」プロパティーに値 /doc/seq を指定します。
  • 「シーケンス・グループ ID へのパス」プロパティーに値 /doc/grp を指定します。
  • 「シーケンス定義の開始」プロパティーを「リテラル」に設定し、値 0 を指定します。
  • 「シーケンス定義の終了」プロパティーを「リテラル」に設定し、値 6 を指定します。その値を指定すると、シーケンス番号 6 のメッセージの受信時に、シーケンス内の前のメッセージがすべて着信していればグループが閉じます (そうでなければ、欠落メッセージのタイムアウトの有効期限が切れた時点で閉じます)。
Resequence ノードが以下のようなメッセージを受け取ります。
<doc><grp>a<grp><seq>6</seq></doc>
<doc><grp>a<grp><seq>5</seq></doc> 
<doc><grp>a<grp><seq>4</seq></doc> 
<doc><grp>a<grp><seq>3</seq></doc>
<doc><grp>a<grp><seq>2</seq></doc>
<doc><grp>a<grp><seq>1</seq></doc>
<doc><grp>a<grp><seq>0</seq></doc>
以下のようなメッセージが Out ターミナルに伝搬します。
<doc><grp>a<grp><seq>0</seq></doc>
<doc><grp>a<grp><seq>1</seq></doc>
<doc><grp>a<grp><seq>2</seq></doc>
<doc><grp>a<grp><seq>3</seq></doc>
<doc><grp>a<grp><seq>4</seq></doc>
<doc><grp>a<grp><seq>5</seq></doc>
<doc><grp>a<grp><seq>6</seq></doc>
シーケンス・グループが閉じた後にノードに着信するそのシーケンス・グループのメッセージは、そのグループの新しいインスタンスの一部として処理されます。
自動タイムアウトを指定する
「自動」を選択し、時間の長さを (秒単位で) 指定します。ノードはその期間、新しいメッセージが空のキューに到達するのを待ちます。 伝搬を待っているメッセージのキューが空になるたびに、Resequence ノードはタイマーを開始します。そのタイマーの有効期限は、指定の秒数が過ぎた時点で切れます。 指定の時間内に新しいメッセージが着信しなければ、シーケンス・グループが閉じ、その後に着信する新しいメッセージは、新しいグループの一部として処理されます。 指定の制限時間内に新しいメッセージがノードに到達すると、タイマーがリセットされます。
Resequence ノードで設定する述部を使用する
「述部」を選択して、メッセージがシーケンスの末尾かどうかを計算するための XPath 式を指定します。 述部の評価結果は、True または False になります。式の評価結果が False の間は、メッセージの収集が続けられます。 メッセージの式の評価結果が True になると、そのメッセージがシーケンスの末尾になり、シーケンス・グループが閉じます。 ただし、前のメッセージがシーケンス・グループで欠落していると、シーケンス・グループは、「欠落しているメッセージ・タイムアウト」プロパティーで指定されている期間、開いたままの状態になります。

シーケンス・グループが閉じた後にノードに着信するそのシーケンス・グループのメッセージは、そのグループの新しいインスタンスの一部として処理されます。

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

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

Sequence ノードの使用

Sequence ノードを使用して、メッセージにシーケンス番号を追加する場合は、「シーケンス定義の終了」プロパティーを使用して、メッセージ・シーケンスの終了点を定義します。 Sequence ノードは、ノードに到達する各入力メッセージに対して単純に増分するシーケンス番号を割り振ります。その終了点は、「シーケンス定義の終了」プロパティーで定義したシーケンス番号になります。

Sequence ノードでは、以下のいずれかの方法で、終了シーケンス番号を指定できます。

リテラル番号として指定する
「リテラル」を選択し、シーケンス番号の終了値として正または負の数値 (例えば 15) を指定します。 値は、-9223372036854775807 から 9223372036854775807 の範囲になります。 単純に増分するシーケンス番号は、そのプロパティーで指定したシーケンス番号の終了値に到達した時点で終了します。
Sequence ノードで設定する述部を使用する
「述部」を選択して、XPath 式の評価結果が True になった時点でシーケンスが終了する、ということを指定します。 詳細については、前の表を参照してください。
自動タイムアウトを指定する
「自動」を選択し、時間の長さを (秒単位で) 指定します。ノードはその期間、シーケンス・グループのメッセージの伝搬後にも新しいメッセージが着信するのを待ちます。 新しいメッセージが着信すれば、タイマーはキャンセルされ、メッセージの伝搬の時点でリセットされます。 指定の時間内に新しいメッセージが着信しなければ、シーケンス・グループが閉じ、その後に着信する新しいメッセージは、新しいグループの一部として処理されます。
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

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

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


概念トピック概念トピック | バージョン 8.0.0.5 | bc28023_