分散トランザクション処理機能 OpenTP1 解説

[目次][用語][索引][前へ][次へ]

3.3.8 メッセージキュー

<この項の構成>
(1) 入力キューと出力キュー
(2) メモリキューでの縮退運転
(3) ディスクキューのメッセージを保持
(4) ディスクキュー満杯時の処理

(1) 入力キューと出力キュー

OpenTP1は,送受信するメッセージをキューに蓄えます。相手システムから受信した入力メッセージを管理する待ち行列を入力キュー(ITQ)といいます。また,相手システムへ送信する出力メッセージを管理する待ち行列を出力キュー(OTQ)といいます。

入力キューや出力キューの割り当て先として,ディスクキューメモリキューを選択できます。

割り当て先としてディスクキューを使用する場合,入力キューおよび出力キューに蓄えられたメッセージは,オンラインシステムが異常終了した場合などの再開始時に,引き継ぐことができます。また,メッセージの再送を使用する場合は,出力キューにディスクキューを割り当てる必要があります。

一方,メモリキューを使用する場合,再開始時にメッセージを引き継ぐことはできませんが,ディスクへの入出力が発生しないため,ディスクキューと比較して処理性能が向上します。再開始時に情報を引き継ぐ必要のないメッセージは,応答時間の短いメモリキューの使用をお勧めします。

OpenTP1は,ディスクキューとして,メッセージキューファイルを使用します。ディスクキューを使用する指定をした場合には,メッセージキューファイルを作成してください。メッセージキューファイルについては,「4.3.1 メッセージキューファイル」を参照してください。

入力キュー用にディスクキューを使用するのか,またはメモリキューを使用するのかは,アプリケーションごとにアプリケーション属性定義(mcfaalcap)のquekindオペランドで指定します。

出力キュー用にディスクキューを使用するのか,またはメモリキューを使用するのかは,論理端末ごとに論理端末定義(mcftalcle)のquekindオペランドで指定します。

ただし,出力キューにディスクキューを使用する指定をしていても,次のメッセージの場合はメモリキューを使用します。

入力キューまたは出力キューにディスクキューを使用したメッセージ送受信を次の図に示します。

図3-35 入力キューまたは出力キューにディスクキューを使用したメッセージ送受信

[図データ]

アプリケーション起動機能を使用する場合の出力キュー(アプリケーション起動用論理端末)についても,ディスクキューを使用するのか,またはメモリキューを使用するのかを選択できます。

アプリケーション起動機能によるメッセージをオンラインシステムが異常終了した場合などの再開始時に引き継ぐ場合,入力キューだけでなくアプリケーション起動用論理端末が使用する出力キューにも,ディスクキューを割り当ててください。アプリケーション起動用論理端末が使用する出力キューにメモリキューを割り当てた場合,再開始時にメッセージが引き継がれないことがあります。

また,指定した時間が経過したあとに起動する(タイマ起動)アプリケーションを再開始時に引き継ぐ場合,さらにアプリケーション起動環境定義(mcftpsvr)のreruntmオペランドでyesを指定します。再開始時のタイマ起動の扱いについては,マニュアル「OpenTP1 プログラム作成の手引」を参照してください。

入力キューと出力キューを,それぞれmcfthldiqコマンド,mcfthldoqコマンドで保留できます。

保留状態は,MCFマネジャ定義の状態引き継ぎ定義(mcfmsts)やMCF通信構成定義の状態引き継ぎ定義(mcftsts)を指定すれば,オンラインシステムが異常終了した場合などの再開始時にも引き継ぐことができます。

ユーザサーバを入れ替える場合や障害が発生した場合などの,入力キューの保留状態を再開始時に引き継ぐ必要がないときは,mcfthldiqコマンドの-rオプションの指定によって,保留状態を引き継がないようにもできます。このとき,再開始時に,mcftrlsiqコマンドで保留状態を解除する必要はありません。

(2) メモリキューでの縮退運転

ディスクキューを使用する場合には,OpenTP1の開始時に何らかの理由でディスクキューが使えないとき,メモリキューを代わりに使って開始できます。これをメモリキューでの縮退運転といいます。メモリキューで縮退運転するかどうかを,入力キューと出力キューそれぞれの拡張予約定義で指定します。メモリキューで縮退運転しない場合は,ディスクキューに格納されるメッセージが廃棄されます。このとき,メッセージ廃棄通知イベント(ERREVT2)に対応するMCFイベント処理用MHPがあれば,起動されます。

メモリキューで縮退運転する場合は,メッセージ(KFCA11065-WまたはKFCA11066-W)が出力されます。

メモリキューで縮退してOpenTP1を開始させる場合,メモリキューはオンライン停止後の全面回復時にメッセージを回復できない点に注意してください。

オンライン中にディスクキューが使用できなくなったときは,メモリキューで縮退運転できません。

縮退運転の原因と復旧方法については,マニュアル「OpenTP1 運用と操作」を参照してください。

(3) ディスクキューのメッセージを保持

ディスクキューを使用した場合には,読み出されたあとの再読み出しに備えて,メッセージを残しておけます。再読み出しに備えて残しておくメッセージを,保持メッセージといいます。保持メッセージ数は,メッセージキューサービス定義で指定します。

メモリキューを使用した場合には,メッセージを残しておけません。

ディスクキューごとに,取り出し待ちメッセージの数と保持メッセージの数が,ユーザが定義した一定の割合を超えたとき,ディスクキューの使用率を警告するメッセージを出力できます。警告メッセージを出力するディスクキューの使用率(使用容量警告率 %で表示)は,メッセージキューサービス定義で指定します。

(4) ディスクキュー満杯時の処理

ディスク入力キューに空きがなくなった場合は,到着したメッセージを廃棄します。メッセージ廃棄通知イベント(ERREVT2)に対応するMCFイベント処理用MHPがあれば,これを起動します。ディスク出力キューに空きがなくなった場合は,メッセージを送信する関数がエラーリターンします。