Hitachi

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


12.1.1 コミットとロールバックの性質

トランザクション内でアプリケーションがメッセージをキューに登録する場合,そのメッセージは,アプリケーションでトランザクションをコミットするときに他アプリケーションから参照できるようになります。コミットするまでは他アプリケーションから参照できません。また,コミット完了前のメッセージは,キューのメッセージ登録数(CurrentQDepth属性)としてカウントされます。そのため,コミット完了前のメッセージ登録数(CurrentQDepth属性)が,最大メッセージ登録数(MaxQDepth属性)と等しくなる場合,他アプリケーションからのMQPUT命令はMQRC_Q_FULLでエラーとなります。トランザクションをコミットすると,すべての変更についてデータの一貫性が保たれます。アプリケーションでエラーを検出したために登録を取り消したい場合には,トランザクションをロールバックできます。ロールバックを実行すると,キューにメッセージは登録されません。TP1/Message Queueがコミットとロールバックを実行する方法は,OpenTP1システムに従います。

また,トランザクション内でメッセージをキューから取り出す場合,アプリケーションがトランザクションをコミットするまでキューにメッセージが残ります。しかし,他アプリケーションでメッセージを取り出すことはできません。アプリケーションがトランザクションをコミットするときにメッセージは削除されます。コミット完了前のメッセージは,キューのメッセージ登録数(CurrentQDepth属性)としてカウントします。アプリケーションがトランザクションをロールバックする場合,TP1/Message Queueは,アプリケーションによる取り出し操作前の状態にキューを戻します。

MQSET命令または運用コマンドによるキュー属性の変更は,トランザクションのコミットとロールバックによる影響を受けません。