3.3.8 メッセージキュー
- 〈この項の構成〉
(1) 入力キューと出力キュー
OpenTP1は,送受信するメッセージをキューに蓄えます。相手システムから受信した入力メッセージを管理する待ち行列を入力キュー(ITQ)といいます。また,相手システムへ送信する出力メッセージを管理する待ち行列を出力キュー(OTQ)といいます。
入力キューや出力キューの割り当て先として,ディスクキューとメモリキューを選択できます。
割り当て先としてディスクキューを使用する場合,入力キューおよび出力キューに蓄えられたメッセージは,オンラインシステムが異常終了した場合などの再開始時に,引き継ぐことができます。また,メッセージの再送を使用する場合は,出力キューにディスクキューを割り当てる必要があります。
一方,メモリキューを使用する場合,再開始時にメッセージを引き継ぐことはできませんが,ディスクへの入出力が発生しないため,ディスクキューと比較して処理性能が向上します。再開始時に情報を引き継ぐ必要のないメッセージは,応答時間の短いメモリキューの使用をお勧めします。
OpenTP1は,ディスクキューとして,メッセージキューファイルを使用します。ディスクキューを使用する指定をした場合には,メッセージキューファイルを作成してください。メッセージキューファイルについては,「4.3.1 メッセージキューファイル」を参照してください。
入力キュー用にディスクキューを使用するのか,またはメモリキューを使用するのかは,アプリケーションごとにアプリケーション属性定義(mcfaalcap)のquekindオペランドで指定します。
出力キュー用にディスクキューを使用するのか,またはメモリキューを使用するのかは,論理端末ごとに論理端末定義(mcftalcle)のquekindオペランドで指定します。
ただし,出力キューにディスクキューを使用する指定をしていても,次のメッセージの場合はメモリキューを使用します。
-
問い合わせ応答型や継続問い合わせ応答型のアプリケーションで,問い合わせメッセージが使用した入力キューがメモリキューのときの応答メッセージの送信
-
同期型のメッセージの送信
入力キューまたは出力キューにディスクキューを使用したメッセージ送受信を次の図に示します。
(2) OpenTP1再開始時のメッセージの扱い
OpenTP1の再開始時にメッセージを引き継ぐかどうかは,メッセージの種類によって異なります。
OpenTP1の再開始時のメッセージの扱いを次の表に示します。なお,メッセージが格納されているキューの割り当て先がメモリキューの場合,表の内容に関係なくOpenTP1の再開始時にメッセージを破棄します。
キュー種別 |
メッセージの種類 |
OpenTP1再開始時のメッセージの扱い |
|
---|---|---|---|
入力キュー |
一方送信メッセージ 問い合わせメッセージ |
||
MCFイベント |
ERREVT1 |
||
ERREVT2 ERREVT3 ERREVT4 ERREVTA |
エラーイベントが発生したメッセージの種類によって,動作が異なります。 OpenTP1の再開始時に引き継がれるメッセージの場合,エラーイベントを引き継ぎます。OpenTP1の再開始時に破棄されるメッセージの場合,エラーイベントを破棄します。※1 |
||
SERREVT SCMPEVT |
破棄します。 |
||
通信イベント(SERREVT,SCMPEVTを除く) |
|||
UAPからの関数発行によるアプリケーション起動メッセージ※2 |
|
||
|
|||
運用コマンド(mcfuevt)によるアプリケーション起動メッセージ |
引き継ぎます。 |
||
ユーザタイマ監視機能によるアプリケーション起動メッセージ |
破棄します。 |
||
出力キュー |
一方送信メッセージ |
引き継ぎます。 |
|
応答メッセージ |
|||
同期型のメッセージ |
破棄します。 |
メッセージの種類 |
通信プロトコル対応製品 |
|||
---|---|---|---|---|
TP1/NET/OSAS-NIF |
TP1/NET/OSI-TP |
TP1/NET/SLU - TypeP2 |
TP1/NET/TCP/IP |
|
一方送信メッセージ |
○ |
× |
○ |
○ |
問い合わせメッセージ |
○ |
− |
− |
× |
応答メッセージ |
○ |
− |
− |
× |
ERREVT1 |
○ |
× |
○ |
○ |
通信イベント(SERREVT,SCMPEVTを除く) |
× |
× |
× |
○ |
メッセージの種類 |
通信プロトコル対応製品 |
||
---|---|---|---|
TP1/NET/User Agent |
TP1/NET/UDP |
TP1/NET/XMAP3 |
|
一方送信メッセージ |
○ |
○ |
○ |
問い合わせメッセージ |
× |
− |
× |
応答メッセージ |
× |
− |
× |
ERREVT1 |
△ |
○ |
× |
通信イベント(SERREVT,SCMPEVTを除く) |
× |
○ |
× |
(3) メモリキューでの縮退運転
ディスクキューを使用する場合には,OpenTP1の開始時に何らかの理由でディスクキューが使えないとき,メモリキューを代わりに使って開始できます。これをメモリキューでの縮退運転といいます。メモリキューで縮退運転するかどうかを,入力キューと出力キューそれぞれの拡張予約定義で指定します。メモリキューで縮退運転しない場合は,ディスクキューに格納されるメッセージが廃棄されます。このとき,メッセージ廃棄通知イベント(ERREVT2)に対応するMCFイベント処理用MHPがあれば,起動されます。
メモリキューで縮退運転する場合は,メッセージ(KFCA11065-WまたはKFCA11066-W)が出力されます。
メモリキューで縮退してOpenTP1を開始させる場合,メモリキューはオンライン停止後の全面回復時にメッセージを回復できない点に注意してください。
オンライン中にディスクキューが使用できなくなったときは,メモリキューで縮退運転できません。
縮退運転の原因と復旧方法については,マニュアル「OpenTP1 運用と操作」を参照してください。
(4) ディスクキューのメッセージを保持
ディスクキューを使用した場合には,読み出されたあとの再読み出しに備えて,メッセージを残しておけます。再読み出しに備えて残しておくメッセージを,保持メッセージといいます。保持メッセージ数は,メッセージキューサービス定義で指定します。
メモリキューを使用した場合には,メッセージを残しておけません。
ディスクキューごとに,取り出し待ちメッセージの数と保持メッセージの数が,ユーザが定義した一定の割合を超えたとき,ディスクキューの使用率を警告するメッセージを出力できます。警告メッセージを出力するディスクキューの使用率(使用容量警告率 %で表示)は,メッセージキューサービス定義で指定します。
(5) ディスクキュー満杯時の処理
ディスク入力キューに空きがなくなった場合は,到着したメッセージを廃棄します。メッセージ廃棄通知イベント(ERREVT2)に対応するMCFイベント処理用MHPがあれば,これを起動します。ディスク出力キューに空きがなくなった場合は,メッセージを送信する関数がエラーリターンします。
(6) 入力キューと出力キューの保留
入力キューおよび出力キューへの書き込みや読み込みは,それぞれmcfthldiqコマンド,mcfthldoqコマンドで一時的に停止できます。これを保留といいます 。
保留の目的は次のとおりです。
-
オンライン中にユーザサーバの入れ替えができます。
-
入力キューまたは出力キューの内容を複写できます。
-
入力キューまたは出力キューに滞留しているメッセージを削除できます。
保留には入力キューまたは出力キューへの書き込みの保留(入力保留)と入力キューまたは出力キューからの読み込みの保留(スケジュール保留)があります。
保留状態は,入力キューはmcftrlsiqコマンド,出力キューはmcftrlsoqコマンドで解除できます。また,MCFマネジャ定義の状態引き継ぎ定義(mcfmsts)やMCF通信構成定義の状態引き継ぎ定義(mcftsts)を指定すれば,OpenTP1が異常終了した場合などの再開始時にも引き継ぐことができます。
保留中にOpenTP1を終了した場合,OpenTP1を強制停止します。OpenTP1を終了する前に必ず保留を解除してください。
入力保留とスケジュール保留を次の図に示します。
保留中に受信または送信したメッセージに対する処理を次の表に示します。
キュー種別 |
保留種別 |
受信または送信したメッセージに対する処理 |
|
---|---|---|---|
保留したあとに受信または送信したメッセージ |
保留する前にキューに格納されていたメッセージ |
||
入力キュー |
入力保留 |
入力保留が解除されるまでMCF通信プロセスまたはアプリケーション起動プロセスの動作を停止します。 |
該当するMHPを正常に起動します。 |
スケジュール保留 |
入力キューにメッセージを格納し,スケジュール保留が解除されるまでMHPがメッセージを取り出しません。 |
スケジュール保留が解除されるまでMHPがメッセージを取り出しません。 |
|
入力保留とスケジュール保留 |
入力保留が解除されるまでMCF通信プロセスまたはアプリケーション起動プロセスの動作を停止します。 |
スケジュール保留が解除されるまでMHPがメッセージを取り出しません。 |
|
出力キュー※1 |
入力保留 |
入力保留が解除されるまでUAPの動作を停止します。※2 |
MCF通信プロセスが正常にメッセージを処理します。 |
スケジュール保留 |
出力キューにメッセージを格納し,スケジュール保留が解除されるまでMCF通信プロセスがメッセージを取り出しません。 |
スケジュール保留が解除されるまでMCF通信プロセスがメッセージを取り出しません。 |
|
入力保留とスケジュール保留 |
入力保留が解除されるまでUAPの動作を停止します。※2 |
スケジュール保留が解除されるまでMCF通信プロセスがメッセージを取り出しません。 |
- 注意事項
-
-
入力キューを保留して,オンライン中にユーザサーバを入れ替える場合,スケジュール保留だけを行ってください。入力保留を行った場合,MCF通信プロセスまたはアプリケーション起動プロセスの動作が停止することで,他のユーザサーバでのメッセージ送受信ができなくなることがあります。
-
保留状態を再開始時に引き継ぐ指定をした場合,次のことをするときは,mcfthldiqコマンドやmcfthldoqコマンドに-rオプションを指定することを推奨します。
入力キューまたは出力キューの内容の複写
滞留しているメッセージの削除
オンライン中のユーザサーバの入れ替え
-