2.5.7 ハートビート機能
ハートビート機能とは,送信側MCAの転送キューにメッセージがない場合,受信側MCAに対して一定間隔でハートビートメッセージを送信し,受信側MCAの応答の有無によってお互いが正常に動作していることを確認する機能です。
特に受信側MCAはこのハートビートメッセージによって受信側の運用コマンドによるチャネル終了契機を送信側MCAに連絡できます。
ハートビート機能は,TP1/Message Queue 05-00以降でサポートされる機能です。相手システムでもハートビート機能がサポートされていることを確認してご利用ください。サポートの有無については該当製品のマニュアルを参照してください。
- 〈この項の構成〉
(1) ハートビートメッセージ送信の契機
ハートビートメッセージ送信の契機とMCAの動作について,次の図に示します。
-
送信側MCAは,転送キューにメッセージがないか確認します。転送キューにメッセージがある場合は,メッセージ送信を開始します。
-
転送キューにメッセージがなく,次に示す条件が満たされている場合,送信側MCAはハートビートメッセージを送信します。
前回のバッチまたはハートビート送信完了からの経過時間 ≧ ハートビート間隔
-
受信側MCAは,ハートビートメッセージを受信すると,ハートビートメッセージへの応答を送信側MCAに返信します。
この時,受信側MCAがmqtstpchaコマンド(またはdcstopコマンド)によるチャネルの正常終了処理中だった場合,受信側MCAはハートビートメッセージへの応答に加えてチャネルの終了要求を返信し,終了します。
-
送信側MCAは,次に示すどれかの条件を満たした場合,チャネルを終了します。
-
チャネル終了を要求するコマンドを受け付けた場合
-
タイマ方式の転送キュー監視で転送キュー監視回数を超えた場合
-
イベント方式の転送キュー監視で切断時間間隔を超えた場合
-
受信側MCAからハートビートメッセージに対する応答と一緒にチャネルの終了を要求された場合
条件を満たさなかった場合,1.に戻ります。
-
(2) ハートビート機能の指定
ハートビート機能を使用する場合,ハートビートメッセージを送信する間隔をTCP定義のmqtalccha定義コマンドの-v htimオペランドで指定します。指定できる値の範囲は0〜999999(単位:秒)です。ハートビート間隔は,すべてのチャネルタイプに指定できます。
ハートビート間隔は,チャネル確立時にコーラとレスポンダ間のネゴシエーションでチェックされ,使用するかどうかが決定されます。また,コーラ,レスポンダ双方でハートビート間隔を指定した場合,大きい方の値が有効になります。
(3) 注意事項
-
ハートビート機能を最も有効にするには,ハートビート間隔を送信側MCAに指定した切断間隔(転送キュー監視がタイマ方式の場合は転送キュー監視間隔×転送キュー監視回数,イベント方式の場合は切断時間間隔)よりも小さくしてください。
-
ハートビート機能を使用すると,メッセージのない場合でも一定間隔でデータが送信されます。このため,ネットワーク上に不要なデータ転送が発生します。
-
転送キュー監視がタイマ方式の場合,送信側MCAに指定した転送キュー監視回数(TCP定義のmqtalccha定義コマンドの-v tim4cntオペランド指定値)が1のとき,ハートビートメッセージは送信されません。
-
受信側MCAでは一定時間(ハートビート間隔×2),ハートビートメッセージ,メッセージ転送,またはその他プロトコルメッセージの受信を待ちます。この時間を超えると通信状態が異常であると判断し,TCP/IPコネクションを解放します。特に,転送キュー監視がタイマ方式の場合,送信側MCAに指定する転送キュー監視間隔(TCP定義のmqtalccha定義コマンドの-v tim4オペランド指定値)に,相手MCAとチャネル開始時にネゴシエーションした結果(双方に指定されたハートビートタイマの大きい方の値)のハートビート間隔の2倍以上の値を設定すると,送信側がハートビートメッセージを送信する前に,受信側MCAが通信状態に異常があると判断してコネクションを解放します。このため,送信側MCAはTCP/IPコネクションにエラーを検出します。