ユーザー出口により、ユーザー提供のカスタム・ソフトウェアが、WebSphere Message Brokers 内の
メッセージ・フローで渡されるデータを追跡できます。
ユーザー提供の関数は、メッセージがメッセージ・フローで渡されるときに、
そのメッセージのライフ・サイクルの特定の時点で呼び出すことができ、また、ユーティリティー関数を呼び出して、フロー内の点に関する情報およびメッセージ・アセンブリーの内容を
照会できます。
ユーザー出口は、以下の 1 つ以上のイベントが発生したときに
呼び出されます。
- 作業単位 (UOW) またはトランザクション (COMMIT/ROLLBACK) の終了
- 2 つのノードの間でのメッセージの引き渡し
- メッセージが入力ソースからデキューされたとき。
上記の基本的なメッセージ・フローでは、以下の 2 つのレベルでメッセージを追跡できます。
トランザクション・レベルでは、以下のイベントを追跡できます。
- フローへのメッセージの読み取り
- トランザクションの完了。
ノード・レベルでは、以下のイベントを追跡できます。
- ノード間でのメッセージの引き渡し
- 特定のノードでの処理の完了。
このようにイベントのタイプは 4 つあり、
以下の順序で発生します。
- メッセージが入力ソースからデキューされる (フローへの読み取り)
- メッセージが処理用にノードに伝搬される
- ノードが処理を完了する
- トランザクションが終了する。
上記の図では例として MQInput ノードを使用していますが、関数は、ユーザー定義ノードも含め、
すべての入力ノードに適用されます。ただし、組み込みノードと
ユーザー定義ノードは、ユーザー出口の呼び出し方法が
少し異なります。組み込み入力ノードの場合、
データを外部ソースから読み取った後、できるだけ早期に
ユーザー出口が呼び出されます。ユーザー定義の入力ノードの場合、
ノードがメッセージを伝搬する前にユーザー出口が呼び出されます。
上記の例では、トランザクションの終了時にイベント 4 が実行されます。
トランザクションが完了した後にユーザー出口が呼び出されるため、ユーザー出口の処理は
そのトランザクションの一部ではありません。トランザクション処理がフローによって
完了されなかった場合でも、ユーザー出口は呼び出されます。メッセージ・フロー・プロパティー
「コミット・カウント」が 1 より大きい場合は、イベント 1 とイベント 4 の間に多対 1 の関係があります。
これは、特定の入力ノードに固有のシナリオにも当てはまることがあります。例えば、MQInputNode が
「メッセージ・グループによるコミット」プロパティーを選択して
構成されている場合が該当します。
任意の数のこれらのイベントを追跡するためのユーザー出口を作成できます。これらのイベントごとに、
以下のデータがユーザー出口で使用可能です。特記されていない限り、
アクセスはすべて読み取り専用です。
- デキュー・メッセージ:
- ビット・ストリーム
- 入力ノード
- 環境ツリー (読み取り/書き込み)
- ノードに伝搬したメッセージ:
- メッセージ・ツリー
- LocalEnvironment ツリー (読み取り/書き込み)
- 例外リスト
- 環境ツリー (読み取り/書き込み)
- ソース・ノード
- ターゲット・ノード
- ノード処理の完了:
- メッセージ・ツリー
- LocalEnvironment ツリー (読み取り/書き込み)
- 例外リスト
- 環境ツリー (読み取り/書き込み)
- ノード
- アップストリーム・ノード
- 例外 (ある場合)
- トランザクションの終了:
- 入力ノード
- 例外 (ある場合)
- 環境ツリー (読み取り/書き込み)
複数のユーザー出口を登録できます。その場合は、定義された順序で
呼び出されます (mqsichangeflowuserexits コマンドを参照してください)。ユーザー出口によって
メッセージ・アセンブリーに行われたすべての変更は、以降のユーザー出口からも可視です。
ユーザー出口が呼び出されるときに、以下の情報を照会できます。
- メッセージ・フロー情報:
- メッセージ・フロー名
- ブローカー名
- ブローカーのキュー・マネージャー名
- 実行グループ名
- メッセージ・フローの「コミット・カウント」プロパティー
- メッセージ・フローの「コミット・インターバル」プロパティー
- メッセージ・フローの「整合トランザクション」プロパティー。
- ノード情報:
- ノード名
- ノード・タイプ
- ターミナル名
- ノード・プロパティー
- メッセージ・アセンブリーのナビゲートおよび読み取り (Message、LocalEnvironment、ExceptionList)
- 環境ツリーのナビゲートおよび読み取り/書き込み。
ユーザー出口は動的に登録でき、構成を再デプロイする
必要はありません。