Hitachi

OpenTP1 Version 7 OpenTP1 メッセージキューイング機能 TP1/Message Queue プログラム作成の手引


13.5.1 トリガメッセージとトランザクション

トランザクション外のトリガイベントで生成されたトリガメッセージは,イニシエーションキューに登録され,トランザクションの外にあり,他メッセージとの依存関係はなく,トリガモニタアプリケーションによって取り出されるようになります。

トランザクション内のトリガイベントで生成されたトリガメッセージは,同じトランザクションの一部としてイニシエーションキューに登録されます。トリガモニタアプリケーションは,トランザクションが完了するまでこれらのトリガメッセージを取り出せません。トランザクションをコミットするときもロールバックするときも同様です。

キューマネジャがイニシエーションキューにトリガメッセージを登録するのに失敗する場合,トリガメッセージはデッドレターキューに登録されます。

注意

トリガイベントの条件があることを確認するためにアクセスするとき,キューマネジャはコミットされたメッセージとコミット待ちメッセージの両方を数えます。

トリガタイプがfirstまたはdepthの場合は,トランザクションがロールバックされるときにも,必要な条件が満たされるときにトリガメッセージを利用できます。例えば,firstのトリガタイプのキューにトランザクション内で登録を実行するとします。この場合,キューマネジャはトリガメッセージを生成します。追加の登録がほかのトランザクションで発生しても,追加のトリガイベントは発生しません。アプリケーションキューのメッセージ数が1から2に変更されるために,トリガイベントの条件が満たされないからです。最初のトランザクションがロールバックされ,次のトランザクションがコミットされると,トリガメッセージはまた生成されます。

しかし,このことによって,トリガイベントの条件が満たされないときにもトリガメッセージが生成されることがあります。トリガを使用するアプリケーションは常に状況に対応できるようにしてください。MQGET命令に待ち合わせオプションを使用し,WaitIntervalフィールドに適切な値を設定することをお勧めします。