13.4.4 トリガタイプfirstの特別な使用例
トリガタイプがfirstのアプリケーションキューに追加のメッセージが到着したときにすでにメッセージがある場合は,通常,キューマネジャは追加のトリガメッセージを生成しません。しかし,キューを処理するアプリケーションで(アプリケーションの終了やシステム障害などのため)キューをオープンできないこともあります。不正なアプリケーション名がプロセス定義オブジェクトに設定された場合,キューを処理するアプリケーションはメッセージを取り出しません。この場合に追加のメッセージがアプリケーションキューに到着しても,メッセージを処理するサーバが動作していないことになります。
これに対処するには,該当するキューの最後のトリガメッセージを生成してから一定の時間が経過した場合にだけ,追加メッセージがアプリケーションキューに到着したときにキューマネジャで追加のトリガメッセージを生成するようにします。この時間はキューマネジャのTriggerInterval属性に指定します。TP1/Message Queueの場合,デフォルトの値は999999999ミリ秒です。
アプリケーションで使用するためにトリガ間隔を指定するときには,次に示す項目について検討してください。
-
TriggerInterval属性に小さな値を設定した場合に,そのキューを処理するアプリケーションがないときは,firstのトリガタイプがeveryのように動作することがあります。この動作はアプリケーションキューにメッセージが登録される頻度,つまり,相手システムの動作状態によって異なります。また,トリガ間隔に0を指定するfirstのトリガタイプは,everyと同等です。
-
トランザクションをロールバックする場合にトリガ間隔に大きな値(デフォルトを含む)を指定するときは,ロールバック時に一つのトリガメッセージが生成されます。しかし,トリガ間隔に小さな値または0を指定するとき(firstのトリガタイプをeveryのように動作させる)は,複数のトリガメッセージが生成されます。トランザクションをロールバックしても,すべてのトリガメッセージは利用できる状態のままです。トリガメッセージの数は,トリガ間隔,およびトリガ間隔に0を指定するときの最大到着メッセージ数によって決定されます。