Hitachi

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


12.2 TP1/Message Queueのトランザクション

TP1/Message Queueは,二相コミットに対応します。単相コミットの機能は提供しません。

アプリケーションでは登録操作と取り出し操作についてトランザクションへの参加を指定できます。登録操作では,MQPMO構造体のOptionsフィールドにMQPMO_SYNCPOINTを指定してください。取り出し操作では,MQGMO構造体のOptionsフィールドにMQGMO_SYNCPOINTを指定してください。明示的に指定しない場合,TP1/Message Queueでは,命令をトランザクション内から呼び出すかどうかで,トランザクションへの参加と不参加が決定されます。各オプション指定時の動作については,マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

トランザクションへの参加と不参加の例を次に示します。

MQPUT(MQPMO_NO_SYNCPOINTを指定) /* トランザクションに参加しない */
MQGET(MQGMO_NO_SYNCPOINTを指定) /* トランザクションに参加しない */
dc_trn_begin()                 /* トランザクションの開始 */
MQGET(MQGMO_SYNCPOINTを指定)    /* トランザクションに参加 */
MQGET(MQGMO_NO_SYNCPOINTを指定) /* トランザクションに参加しない */
MQPUT(MQPMO_SYNCPOINTを指定)    /* トランザクションに参加 */
MQPUT(MQPMO_NO_SYNCPOINTを指定) /* トランザクションに参加しない */
dc_trn_unchained_commit()      /* 同期点の取得
                                  (トランザクションの終了) */

なお,トランザクション制御用オプションをリンケージしないでUAPを作成する場合,次の点に注意してください。