13.2 トリガの概要
キューマネジャは,トリガイベントが発生する条件を定義します。キューについてトリガが有効なときにトリガイベントが発生すると,キューマネジャはイニシエーションキューにトリガメッセージを送信します。イニシエーションキューにトリガメッセージがあることはトリガイベントの発生を意味します。
キューマネジャが生成するトリガメッセージは,永続メッセージではありません。そのため,ログ取得が減り,再度開始するときの複製動作が最小になることから,再度開始するときの時間が短縮されます。
イニシエーションキューを処理するアプリケーションをトリガモニタアプリケーションといいます。トリガモニタアプリケーションは,トリガメッセージを読み込み,トリガメッセージにある情報に基づいて適切な動作を実行します。通常は,他アプリケーションを開始し,トリガメッセージ発生の原因となったキューを処理します。トリガモニタアプリケーションは,イニシエーションキューからメッセージを読み込むアプリケーションです。
キューでトリガを有効にする場合,必要に応じて,キューに対応するプロセス定義オブジェクトを作成できます。プロセス定義オブジェクトには,トリガイベント発生の原因となったメッセージを処理するアプリケーションについての情報があります。プロセス定義オブジェクトを作成すると,キューマネジャがその情報を取り出してトリガメッセージに設定します。この情報はトリガモニタアプリケーションから利用できます。キューに対応するプロセス定義オブジェクトの名前は,ローカルキュー属性のProcessName属性に指定します。各キューに異なるプロセス定義オブジェクトを指定したり,複数のキューで同じプロセス定義オブジェクトを共有したりできます。
トリガに関係する要素について説明します。
- アプリケーションキュー
-
トリガが設定され,条件が満たされるとトリガメッセージの書き込みを要求するローカルキューです。
- プロセス定義オブジェクト
-
アプリケーションキューには,プロセス定義オブジェクトを対応づけることができます。プロセス定義オブジェクトには,アプリケーションキューからメッセージを取り出すアプリケーションについての詳細情報があります。
- トリガイベント
-
キューマネジャによってトリガメッセージが生成されるイベントです。通常は,アプリケーションキューへのメッセージの到着のことですが,その他の場合に発生することもあります。TP1/Message Queueでは,トリガイベントを発生させる条件を制御できます。詳細については,「13.3 トリガイベントの条件」を参照してください。
- トリガメッセージ
-
キューマネジャは,トリガイベントを検出するとトリガメッセージを生成します。このとき,キューマネジャは開始するアプリケーションについてのトリガメッセージ情報をコピーします。この情報はアプリケーションキュー,および対応するプロセス定義オブジェクトに依存します。トリガメッセージの形式については,「13.7.4 トリガメッセージの形式」を参照してください。
- イニシエーションキュー
-
イニシエーションキューは,キューマネジャがトリガメッセージを登録するローカルキューです。キューマネジャは,一つ以上のイニシエーションキューを保持でき,各イニシエーションキューは一つ以上のアプリケーションキューと対応づけられます。
- トリガモニタアプリケーション
-
トリガモニタアプリケーションは常時動作するプログラムであり,一つ以上のイニシエーションキューを処理します。トリガメッセージがイニシエーションキューに到着するとき,トリガモニタアプリケーションはトリガメッセージを取り出して情報を使用します。トリガモニタアプリケーションは他アプリケーションを開始させ,他アプリケーションはアプリケーションキューに到着したメッセージを取り出します。このときトリガモニタアプリケーションは,トリガメッセージヘッダにある情報を他アプリケーションに渡します。トリガメッセージヘッダには,アプリケーションキューの名前などがあります。
トリガの動作について,次の図に示します。この例では,トリガタイプはfirstです。
|
図中の番号について説明します。
-
アプリケーションAはローカルシステムまたはリモートシステム上で動作し,アプリケーションキューにメッセージを登録します。取り出し用にこのキューをオープンするアプリケーションがないことに注意してください。このことはトリガタイプがfirstまたはdepthである場合に影響します。
-
キューマネジャは,トリガイベントを生成する必要があるか条件を確認します。条件が満たされるとトリガイベントが生成されます。トリガメッセージの生成時には,対応するプロセス定義オブジェクトで保持する情報が使用されます。
-
キューマネジャはトリガメッセージを生成し,アプリケーションキューに対応するイニシエーションキューに登録します。ただし,トリガモニタアプリケーションが取り出し用にイニシエーションキューをオープンしているとします。
-
トリガモニタアプリケーションがイニシエーションキューからメッセージを取り出します。
-
トリガモニタアプリケーションが開始コマンドでアプリケーションB(サーバアプリケーション)を開始します。
-
アプリケーションBはアプリケーションキューをオープンして,メッセージを取り出します。
- 注意
-
-
取り出し用にアプリケーションキューをオープンするアプリケーションがある場合にトリガタイプがfirstまたはdepthであると,トリガイベントは発生しません。キューがすでに処理されているためです。
-
イニシエーションキューが取り出し用にオープンされていない場合,キューマネジャはトリガメッセージを生成しません。トリガモニタアプリケーションがイニシエーションキューを取り出し用にオープンするまで待ちます。
-
チャネルをトリガ起動する場合は,firstまたはdepthのトリガタイプにすることをお勧めします。
-
一つのイニシエーションキューで,複数のアプリケーションキューに対応できます。
アプリケーションキューとイニシエーションキューの関係について,次の図に示します。
|
各アプリケーションキューには,対応するプロセス定義オブジェクトが一つあります。プロセス定義オブジェクトにはメッセージを処理するアプリケーションについての詳細情報を設定します。その情報をキューマネジャがトリガメッセージに設定するので,必要なイニシエーションキューは一つだけです。トリガモニタアプリケーションはトリガメッセージから情報を取り出し,各アプリケーションキューのメッセージを処理する適切なアプリケーションを開始します。
- 〈この節の構成〉