Hitachi

OpenTP1 Version 7 OpenTP1 メッセージキューイング機能 TP1/Message Queue 使用の手引


2.1.4 MQI命令使用時のOpenTP1アプリケーションとの関係

TP1/Message Queueのアプリケーションは,OpenTP1のSUP(サービス利用プログラム),SPP(サービス提供プログラム),またはMHP(メッセージ処理プログラム)として作成します。アプリケーションからのメッセージの登録および取り出しは,OpenTP1のトランザクションと同期させることができます。

TP1/Message Queueのアプリケーションは,C言語またはCOBOL言語で作成します。データ操作言語では作成できません。

〈この項の構成〉

(1) TP1/Message Queueで使用できる命令

TP1/Message Queueで使用できる命令を次の表に示します。なお,命令の詳細については,マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

表2‒3 TP1/Message Queueで使用できる命令

命令

SUP

SPP

MHP

オフラインの業務をするアプリケーション

トランザクション範囲でない

トランザクション範囲(ルート)

トランザクション範囲でない

トランザクション範囲

ルート

ルート以外

MQCONN

MQDISC

MQOPEN

MQCLOSE

MQPUT

MQGET

MQPUT1

MQINQ

MQSET

(凡例)

○:該当する条件で呼び出せます。

−:該当する条件で呼び出せません。

(2) アプリケーションとキューマネジャの接続

アプリケーションがメッセージキューイング機能を使用する場合,必ずMQCONN命令を呼び出してキューマネジャに接続してください。キューマネジャに接続すると,コネクションハンドルという値がアプリケーションに返されます。

また,キューなどのオブジェクトを使用する場合は,MQOPEN命令を呼び出してオブジェクトをオープンする必要があります(ただし,MQPUT1命令を使用する場合は不要です)。オブジェクトをオープンすると,オブジェクトハンドルという値がアプリケーションに返されます。

アプリケーションとキューマネジャの接続の手順およびハンドルの有効範囲について,次の図に示します。

図2‒2 アプリケーションとキューマネジャの接続手順およびハンドルの有効範囲

[図データ]

図中に示したアプリケーションとキューマネジャの接続の手順を次に示します。図中の番号と,手順の番号は対応しています。

  1. MQCONN命令を呼び出してキューマネジャへ接続を要求します。

  2. キューマネジャは,コネクションハンドルをMQCONN命令に返します。

  3. 手順2.で返されたコネクションハンドルを指定してMQOPEN命令を呼び出します。

  4. キューマネジャは,オブジェクトハンドルをMQOPEN命令に返します。

  5. MQOPEN命令以降に呼び出す命令で,該当するオブジェクトを利用する場合には,手順4.で返されたオブジェクトハンドルを指定します。

ハンドルの有効範囲を次に示します。

コネクションハンドル

MQCONN命令を呼び出したアプリケーション(アプリケーションとキューマネジャをMQCONN命令で接続し,MQDISC命令で切り離すまで)

オブジェクトハンドル

MQOPEN命令を呼び出したアプリケーション(オブジェクトをMQOPEN命令でオープンし,MQCLOSE命令でクローズするまで)

(3) トランザクションとメッセージキューアクセスとの関係

メッセージの登録および取り出しをOpenTP1のトランザクションと同期させることができます。OpenTP1のトランザクション内で,MQPUT命令,MQPUT1命令,またはMQGET命令を呼び出すと,その命令による登録および取り出しは,トランザクションの一部として処理されます。ただし,OpenTP1のトランザクション内であっても,同期点を取らないことを指定すると,その命令はトランザクションの一部にはなりません。

(4) アプリケーションからメッセージキューにアクセスする場合の条件

メッセージキューのアクセスでは,グローバルトランザクションのRPCの形態をすべて同期応答型RPCにする必要があります。非同期応答型RPC,非応答型RPCからメッセージキューへアクセスした場合,動作は保証されません。