分散トランザクション処理機能 OpenTP1 解説
OpenTP1は,MHPのサービスグループ単位にスケジュールキューを作成してスケジュールします。まず,MCFはメッセージに組み込まれたアプリケーション名をサービスグループ名とサービス名に変換し,受信メッセージを入力キューに登録します。アプリケーション名と,サービスグループ名・サービス名の対応は,アプリケーション属性定義で指定します。MCFは,入力キューに受信メッセージの最終セグメントを格納した時点で,変換されたサービスグループ名とサービス名を基に,MHPへのサービス要求をスケジュールキューに登録します。登録したサービス要求は,スケジュールキューから先入れ先出しで取り出します。
MHPのサービスグループが,メッセージを受信したMCFと同じノードにないとスケジュールできません。
MHPのスケジュールを次の図に示します。
図3-48 MHPのスケジュール
コマンドでMHPのアプリケーション名を指定して,対応するアプリケーションを閉塞できます。MHPを閉塞,閉塞を解除するコマンドを次に示します。
コマンドを入力してMHPを閉塞した場合のMHPの閉塞状態は,オンラインシステム停止後の全面回復時に引き継げます。閉塞状態を引き継ぐかどうかを,状態引き継ぎ定義で指定します。なお,mcftdctsgコマンドでサービスグループを閉塞するとき,閉塞状態を引き継がない指定ができます。この場合,全面回復時にmcftactsgコマンドで閉塞を解除する必要はありません。
表3-8 MHPのアプリケーション名による閉塞
閉塞種別 |
タイミング | |
---|---|---|
閉塞したあとに到着したメッセージに対する処理 | 閉塞する前に到着してすでに入力キューに登録されているメッセージに対する処理 | |
入力とスケジュールを閉塞 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録します。 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録し直します。 |
入力だけを閉塞 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録します。 | 該当するMHPを正常に起動します。 |
スケジュールだけを閉塞 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録します。 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録し直します。 |
図3-49 アプリケーション名による閉塞
表3-9 MHPのサービスの閉塞
閉塞種別 |
タイミング | |
---|---|---|
閉塞したあとに到着したメッセージに対する処理 | 閉塞する前に到着してすでに入力キューに登録したメッセージに対する処理 | |
入力とスケジュールを閉塞 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録します。 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録し直します。 |
入力だけを閉塞 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録します。 | 該当するMHPを正常に起動します。 |
スケジュールだけを閉塞 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録します。 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録し直します。 |
表3-10 MHPのサービスグループの閉塞
閉塞種別 |
タイミング | ||
---|---|---|---|
閉塞したあとに到着したメッセージに対する処理 | 閉塞する前に到着してすでに入力キューに登録されているメッセージに対する処理 | ||
ディスク入力キュー | 入力とスケジュールを閉塞 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録します。 | スケジュール待ち状態にし,閉塞解除後に該当するMHPを正常に起動します。 |
入力だけを閉塞 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録します。 | 該当するMHPを正常に起動します。 | |
スケジュールだけを閉塞 | 入力キューに登録し,スケジュール待ち状態にします。※ | スケジュール待ち状態にし,閉塞解除後に該当するMHPを正常に起動します。 | |
メモリ入力キュー | 入力とスケジュールを閉塞 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録します。 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録し直します。 |
入力だけを閉塞 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録します。 | 該当するMHPを正常に起動します。 | |
スケジュールだけを閉塞 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録します。 | MCFイベント処理用MHP(ERREVT2)対応の入力キューに登録し直します。 |
MHPがサービスを実行中に異常終了したときの閉塞単位をアプリケーション属性定義で指定すると,異常終了したときに,定義した単位で自動的に閉塞できます。
アプリケーション単位で閉塞するには,アプリケーション属性定義のapliholdにアプリケーション単位で閉塞する指定をします。
サービス単位で閉塞するには,アプリケーション属性定義のservholdにサービス単位で閉塞する指定をします。
サービスグループ単位で閉塞するには,アプリケーション属性定義のsrvgholdにサービスグループ単位で閉塞する指定をします。
また,異常終了した回数によって,アプリケーション,サービスまたはサービスグループを閉塞するかどうかを,アプリケーション属性定義で指定します。このとき,連続して異常終了した回数を数えるか,または異常終了した回数の合計を数えるかのどちらかを選択します。異常終了した回数には,MHPからdc_mcf_rollback関数(ノーリターン指定)でロールバックした回数も含めます。ロールバックの関数については,マニュアル「OpenTP1 プログラム作成の手引」を参照してください。
サービスグループ単位でスケジュールだけを閉塞する場合,MHPがサービスを実行中に異常終了したときの受信メッセージを,エラーイベントに切り替えるか,スケジュールキューの先頭に再スケジュールするかを指定できます。スケジュールキューの先頭に再スケジュールするには,アプリケーション属性定義のrecvmsgにrを指定します。
異常終了による自動閉塞でのMHPの閉塞状態は,オンラインシステム停止後の全面回復時に引き継ぎません。
アプリケーション属性定義のaplihold,servholdまたはsrvgholdに,異常終了した場合に閉塞しない指定をした場合には,アプリケーション,サービスまたはサービスグループを閉塞しません。この場合,異常終了が続くときには,コマンドを使って,アプリケーション,サービスまたはサービスグループを閉塞してください。
MCFは,次に示す場合にMHPを再スケジュールします。
MHPの再スケジュール時の処理の流れを,次の図に示します。
図3-50 MHPの再スケジュールの処理の流れ
MHPを再スケジュールするためには,アプリケーション起動プロセスが必要です。このため,アプリケーション起動プロセス用のMCF通信構成定義を作成する必要があります。
また,受信メッセージを,入力キューに再度格納してから再スケジュールします。このため,再スケジュールするメッセージよりもあとに受信したメッセージが,再スケジュールするメッセージを追い越すことがあります。
異常終了したMHPを再スケジュールする場合,アプリケーション属性定義(mcfaalcap)またはUAP共通定義(mcfmuap)の次のオペランドで,再スケジュールの回数や間隔などを指定できます。
指定した回数を超えてMHPが異常終了すると,再スケジュールされません。KFCA11163-Eメッセージが出力され,エラーイベントが通知されます。
なお,MHPからdc_mcf_rollback関数(RETRY指定)でロールバックした場合やMHPが異常終了した場合に,MHPを再スケジュールすると,アプリケーション,サービス,またはサービスグループの自動閉塞で使用する,MHPが連続して異常終了した回数には含まれません。
MCFはMHPのスケジュール時に,アプリケーション属性定義で指定したアプリケーション名に対応するサービスグループがあるかどうかをチェックします。アプリケーション名に対応するサービスグループがない場合,該当するサービスグループが存在しないというメッセージログを出力して,サービスグループへのスケジュールだけを閉塞します。
アプリケーション名とMHPの不整合による自動閉塞でのMHPの閉塞状態は,オンラインシステム停止後の全面回復時に引き継ぎません。
All Rights Reserved. Copyright (C) 2006, 2012, Hitachi, Ltd.