3.8.3 非トランザクション属性のMHP
トランザクションとして稼働しないMHP(非トランザクション属性のMHP)を作成できます。非トランザクション属性のMHPはトランザクションとして処理できませんが,従来のMHPの処理に比べて,処理速度を向上できます。
(1) トランザクション処理のMHPとの違い
トランザクションとして稼働するMHPと同様のメッセージ送受信の関数を使えます。ただし,次の点が異なります。
-
メッセージ出力通番は設定できますが,エラー時の回復対象として出力通番を使えません。
-
同期点処理をする関数(dc_mcf_commit関数,dc_mcf_rollback関数)は呼び出せません。また,メッセージの再送(dc_mcf_resend関数)も呼び出せません。このような関数を呼び出した場合はエラーリターンします。
(2) 非トランザクション属性のMHPの定義
(a) 使えるメッセージキュー
非トランザクション属性のMHPでは,メモリキューだけ使えます。ディスクキューは使えません。MCFアプリケーション定義アプリケーション属性定義mcfaalcapの-gオプションquekindオペランドには,メモリキューを指定してください。
(b) MHPのトランザクション属性
非トランザクション属性のMHPには,MCFアプリケーション定義アプリケーション属性定義のtrnmodeオペランドにnontrnを指定します。ユーザサービス定義のatomic_updateの値がYでも,トランザクションでない処理となります。
(c) 時間監視
非トランザクション属性のMHPの時間監視は,MCFアプリケーション定義アプリケーション属性定義mcfaalcapオペランドの-vオプションで指定します。ここに指定した時間を過ぎると,非トランザクション属性のMHPは異常終了します。この定義に0を指定した場合は,時間監視はしません。
非トランザクション属性のMHPから同期型のメッセージ通信関数を呼び出した場合,この処理時間は監視時間に含みません。非トランザクション属性のMHPからSPPのサービスを要求した場合は,SPPの処理時間も監視時間に含みます(このSPPで同期型のメッセージを処理している場合,その時間も監視時間に含みます)。
- 注意事項
-
サービス関数開始から終了までの実行監視時間の精度は秒単位です。そのため,タイミングによっては,指定した監視時間よりも短い時間でプロセスを強制停止することがあります。サービス関数開始から終了までの実行監視時間が小さくなるほど,誤差の影響を受けやすくなりますので,このオペランドには3(単位:秒)以上の値の指定を推奨します。
(3) 非トランザクション属性のMHPで障害が起こった場合
MCFアプリケーション定義の指定によって,ERREVT2,またはERREVT3のMCFイベント処理用MHPが起動されます。非トランザクション属性のMHPからSPPのサービスを要求している場合,SPPの処理に対しては何もしません。
継続問い合わせ応答形態の処理の場合に,一時記憶データの実更新ができなかったときは,エラーイベントの定義に関係なく,継続問い合わせ応答処理を終了させます。システム内部の障害などで,継続問い合わせ応答処理を終了できない場合は,継続問い合わせ応答の強制終了コマンド(mcftendct -f)の実行を要求するメッセージログが出力されるので,コマンドを実行して継続問い合わせ応答処理を終了させてください。