Hitachi

OpenTP1 Version 7 OpenTP1 メッセージキューイング機能 TP1/Message Queue 使用の手引


2.3.8 チャネル確立時のTCP/IPソケット関数発行シーケンス

チャネル確立時のTCP/IPソケット関数発行シーケンスを,コーラ側およびレスポンダ側から説明します。

〈この項の構成〉

(1) コーラ側チャネル確立時のTCP/IPソケット関数発行シーケンス

コーラ側チャネル確立時のTCP/IPソケット関数発行シーケンスを次の図に示します。

図2‒24 コーラ側チャネル確立時のTCP/IPソケット関数発行シーケンス

[図データ]

[図データ]

図中に示す関数(socket〜setsockopt〜〔bind〕〜ioctl)でエラーになった場合,KFCA16331-E(TCP/IPインタフェースエラー)が出力されます。この時,確立再試行が指定されている場合は,確立再試行が実行されます(チャネル状態は「チャネル確立リトライ中」になります)。確立再試行が指定されていない場合は,チャネル確立に失敗します(チャネル状態は「チャネル使用不可」になります)。

なお,自システムのポート番号が指定されている場合は,(mqtalccha定義コマンドの-r servnameオペランド指定値の名称から変換したポート番号,または-r portnoオペランド指定値のポート番号)〜(該当ポート番号+-r portnumオペランド指定値−1)の範囲内でbind処理します。bind処理するポート番号が65535を超える場合は65535で処理を中止します。すべてのポート番号が使用中の場合はKFCA16331-E(TCP/IPインタフェースエラー)が出力されます。

1回目のTCP/IPコネクション確立要求(connect)で接続を確認できない場合,mqtalccha定義コマンドの-tオプションで指定された回数または間隔(tretrycnt,tretryint)でTCP/IPコネクションの状態が確認されます。指定された回数・間隔内に接続を確認できない場合は,KFCA16331-E(TCP/IPインタフェースエラー)が出力されて,確立再試行が実行されます(確立再試行の指定がある場合)。

TCP/IPコネクション確立後,〔setsockopt〕関数でエラーになった場合も,KFCA16331-E(TCP/IPインタフェースエラー)が出力されて,確立再試行が実行されます(確立再試行の指定がある場合)。

(2) レスポンダ側チャネル確立時のTCP/IPソケット関数発行シーケンス

レスポンダ側チャネル確立時のTCP/IPソケット関数発行シーケンスを次の図に示します。

図2‒25 レスポンダ側チャネル確立時のTCP/IPソケット関数発行シーケンス

[図データ]

図中に示す関数(socket〜setsockopt〜bind〜ioctl〜listen)でエラーになった場合,KFCA16331-E(TCP/IPインタフェースエラー)が出力されて,ネットワークリクエストによるチャネルの起動機能は縮退します(TP1/Message Queueを再度開始するまで縮退します)。

関数(accept〜〔setsockopt〕)でエラーになった場合は,KFCA16332-W(TCP/IPインタフェースエラー。処理続行)が出力されて,TCP/IPコネクションが解放されます。ただし,新たな接続要求は,受け付け処理できます。

(3) 注意事項

MCAはTCP/IPソケットの回線監視(keepalive)機能を使用して回線障害を検出することがあります。keepaliveによる障害検出まで一定時間が必要なため,通信相手のMCAとの間でチャネルの状態が不一致になります。このため,コーラ側チャネルで先に回線障害を検出し,チャネルの確立再試行によってチャネルを再確立すると,相手システムのチャネルとの状態不一致が発生(障害を検出していないMCAでKFCA16317-Eメッセージを出力)します。

この場合,keepaliveによる障害検出を待つか,障害検出できていないMCAのチャネルを,mqtstpchaコマンドで一度チャネルを終了し,mqtstachaコマンドで再度チャネルを開始してください。また,mqtalccha定義コマンドの-fオプションのadoptchkオペランドでoff以外の値を指定すると,チャネルの開始要求に対して動作中のMCAを強制停止して新たにチャネルを開始できます。