TP1/Message Queueのアプリケーションは,OpenTP1のSUP(サービス利用プログラム),SPP(サービス提供プログラム),またはMHP(メッセージ処理プログラム)として作成します。アプリケーションからのメッセージの登録および取り出しは,OpenTP1のトランザクションと同期させることができます。
TP1/Message Queueのアプリケーションは,C言語またはCOBOL言語で作成します。データ操作言語では作成できません。
TP1/Message Queueで使用できる命令を次の表に示します。なお,命令の詳細については,マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。
表2-3 TP1/Message Queueで使用できる命令
命令 | SUP | SPP | MHP | オフラインの業務をするアプリケーション | |||
---|---|---|---|---|---|---|---|
トランザクション範囲でない | トランザクション範囲(ルート) | トランザクション範囲でない | トランザクション範囲 | ||||
ルート | ルート以外 | ||||||
MQCONN | ○ | ○ | ○ | ○ | ○ | ○ | - |
MQDISC | ○ | ○ | ○ | ○ | ○ | ○ | - |
MQOPEN | ○ | ○ | ○ | ○ | ○ | ○ | - |
MQCLOSE | ○ | ○ | ○ | ○ | ○ | ○ | - |
MQPUT | ○ | ○ | ○ | ○ | ○ | ○ | - |
MQGET | ○ | ○ | ○ | ○ | ○ | ○ | - |
MQPUT1 | ○ | ○ | ○ | ○ | ○ | ○ | - |
MQINQ | ○ | ○ | ○ | ○ | ○ | ○ | - |
MQSET | ○ | ○ | ○ | ○ | ○ | ○ | - |
アプリケーションがメッセージキューイング機能を使用する場合,必ずMQCONN命令を呼び出してキューマネジャに接続してください。キューマネジャに接続すると,コネクションハンドルという値がアプリケーションに返されます。
また,キューなどのオブジェクトを使用する場合は,MQOPEN命令を呼び出してオブジェクトをオープンする必要があります(ただし,MQPUT1命令を使用する場合は不要です)。オブジェクトをオープンすると,オブジェクトハンドルという値がアプリケーションに返されます。
アプリケーションとキューマネジャの接続の手順およびハンドルの有効範囲について,次の図に示します。
図2-2 アプリケーションとキューマネジャの接続手順およびハンドルの有効範囲
図中に示したアプリケーションとキューマネジャの接続の手順を次に示します。図中の番号と,手順の番号は対応しています。
ハンドルの有効範囲を次に示します。
メッセージの登録および取り出しをOpenTP1のトランザクションと同期させることができます。OpenTP1のトランザクション内で,MQPUT命令,MQPUT1命令,またはMQGET命令を呼び出すと,その命令による登録および取り出しは,トランザクションの一部として処理されます。ただし,OpenTP1のトランザクション内であっても,同期点を取らないことを指定すると,その命令はトランザクションの一部にはなりません。
メッセージキューのアクセスでは,グローバルトランザクションのRPCの形態をすべて同期応答型RPCにする必要があります。非同期応答型RPC,非応答型RPCからメッセージキューへアクセスした場合,動作は保証されません。