5.3 開始時のチャネル情報引き継ぎ
TP1/Message Queueは,正常開始時にチャネル情報を引き継ぐために,正常開始時のチャネル情報引き継ぎ機能を提供します。
正常開始時のチャネル情報引き継ぎ機能によって,TP1/Message Queueは,OpenTP1正常開始時にメッセージシーケンス番号,および最終メッセージの送達確認状態などを引き継ぐことができます。正常開始時のチャネル情報引き継ぎ機能を使用すると再開始時と同様のチャネルの運用が可能になります。引き継ぐことができるチャネルの情報を,次の表に示します。
表5-3 正常開始時に引き継ぐことができるチャネルの情報
情報 | 引き継ぐ内容 | 該当するチャネル |
---|
メッセージシーケンス番号 | 仕掛かりシーケンス番号,完了シーケンス番号 | |
送達確認情報 | 最終バッチの送達確認状態 | - センダチャネル
- サーバチャネル
- クラスタセンダチャネル
|
メッセージシーケンス番号リセット値 | mqtrstchaコマンドで指定したリセット値 | |
リセットデータで受信したリセット値 | - レシーバチャネル
- リクエスタチャネル
- クラスタレシーバチャネル
|
相手システム情報 | mqtaltchaコマンドに-l permオペランドを指定して変更した情報 | - センダチャネル
- リクエスタチャネル(コーラチャネルだけ)
- サーバチャネル(コーラチャネルだけ)
|
自動定義チャネル情報 | 自動定義クラスタセンダおよびクラスタレシーバインスタンス | |
- <この節の構成>
- (1) チャネル管理情報格納ファイル
- (2) チャネル情報を引き継がない条件
- (3) 注意事項
(1) チャネル管理情報格納ファイル
正常開始時のチャネル情報引き継ぎ機能を使用する場合,チャネル管理情報格納ファイルを使用します。
チャネル管理情報格納ファイルは二重化できます。A,およびB系の二つのファイルに同様の内容を格納します。情報を回復する際にはファイル破壊の有無をチェックし,有効なファイルからチャネル情報を回復します。
チャネル管理情報格納ファイルのファイル名は,MQAサービス定義のmqa_channel_inf_file_name_aオペランドおよびmqa_channel_inf_file_name_bオペランドで指定します。省略した場合は,正常開始時にチャネル情報を引き継ぎません。
チャネル管理情報格納ファイルは,通常ファイル上,またはOpenTP1ファイルシステム上に作成できます。
(2) チャネル情報を引き継がない条件
正常開始をしても,チャネル情報を引き継がない場合があります。どのチャネル情報を引き継がないかは,条件によって異なります。
- 次に示す条件で正常開始した場合は,どのMQTサーバのチャネル情報も引き継ぎません。
- 前回のオンラインが強制停止,またはOpenTP1が異常終了し,強制正常開始したとき
- チャネル管理情報格納ファイルのA,およびB両系がない,または破壊されているとき
- 自システムのキューマネジャ名(mqaquemgr定義コマンドの-nオプション)を変更したとき
- 次に示す条件で正常開始した場合は,該当するMQTサーバのチャネル情報を引き継ぎません。
- MQT通信プロセス識別子(mqttenv定義コマンドの-sオプション)を変更したとき
- 次に示す条件で正常開始した場合は,該当するチャネルのチャネル情報を引き継ぎません。
- TCP定義のmqtalccha定義コマンドに指定したチャネルタイプ(-yオプション)を変更したとき
このとき,該当するチャネル以外はチャネル情報を引き継ぎます。
- 正常開始時にMQT通信構成定義からチャネルを削除したとき
- チャネルが所属するクラスタ名(mqtalccha定義コマンドの-aオプション)を変更したとき
- SYSTEM.CLUSTER.REPOSITORY.QUEUEのメッセージを削除したとき(クラスタ自動定義チャネル情報)
- 次に示す条件の送信側チャネルがある場合は,正常開始時にKFCA31909-Eメッセージが出力されます。バッチサイズを変更するまでMQTサーバを開始できません。
- センダチャネル,サーバチャネルまたは事前定義クラスタセンダチャネルについて,TCP定義のmqtalccha定義コマンドに指定したバッチサイズ(-jオプション)が前回のオンラインの値よりも小さく,かつメッセージ送達確認状態=未確認のとき
- 自動定義クラスタセンダチャネルについて,バッチサイズが前回のオンラインの値よりも小さく,かつメッセージ送達確認状態=未確認のとき。自動定義クラスタセンダチャネルのバッチサイズの計算式については,4章の「チャネルのネゴシエーション」を参照してください。
チャネル情報を引き継がない場合,次の表に示す属性値になります。
表5-4 チャネルを引き継がない場合の属性値および注意点
情報 | 属性値 | 注意点 |
---|
メッセージシーケンス番号 | 仕掛かりシーケンス番号=0,完了シーケンス番号=0(すべてのチャネル) | 相手システムとの間でメッセージシーケンス番号が不一致になるので,メッセージシーケンス番号をリセットする必要があります。 |
送達確認情報 | メッセージ送達確認状態(送信側チャネル) | 送信チャネルのメッセージ送達確認状態=未確認,かつ受信チャネル側でメッセージの受信処理が完了している場合,転送メッセージの二重送信が最大バッチサイズ分発生します。 |
メッセージシーケンス番号リセット値 | リセットしたメッセージシーケンス番号 | 前回のオンライン時にリセットしたメッセージシーケンス番号でメッセージ送受信をする場合は,再度リセット処理をする必要があります。 |
相手システム情報 | TCP定義のmqtalccha定義コマンド-oオプションで指定する属性 | 前回のオンライン時にmqtaltcha -l permコマンドによって変更した相手システム情報がある場合は,再度mqtaltchaコマンドを入力する必要があります。 |
自動定義チャネル情報 | 自動定義クラスタセンダおよびクラスタレシーバインスタンスなし | - |
- (凡例)
- -:該当しません。
TCP定義に追加したチャネルはTCP定義を基に初期状態のチャネル情報で開始します。
(3) 注意事項
- 次に示すオンライン開始時には,ログメッセージが出力されます。
- 正常開始時のチャネル状態引き継ぎ機能を使用する最初のオンライン
- チャネル管理情報格納ファイルを変更したあとのオンライン
- チャネル管理情報格納ファイルを意図的に削除したあとのオンライン
出力されるログメッセージを次に示します。
KFCA31905-W 指定したチャネル管理情報格納ファイルは存在しません。
KFCA31903-W 前回のオンライン中のチャネル管理情報を引き継ぐ事ができません。
ログメッセージが出力されるのは,チャネル情報を引き継ぐために必要な管理状態が存在しないためです。ログメッセージを無視して,オンラインを続行してください。
- MQAサービス定義に指定したチャネル管理情報格納ファイルからの情報読み込みで,ファイル内容に異常が検出された場合,ファイル内容が破壊されていると判断され,その後の書き込み処理が続行されます。このため,MQAサービス定義に誤ったファイル名を指定すると,既存のデータが失われますので注意してください。
- チャネル情報引き継ぎ機能を使用しない場合,またはチャネル情報を引き継がない条件に該当する場合は,メッセージの二重受信と判断し,受信したメッセージを破棄したり,メッセージシーケンス番号不一致になったりすることがあります。正常開始後,チャネルを開始する前に,メッセージシーケンス番号のリセットを必ず行ってください。二重受信メッセージが破棄される条件については,「2.4.4(7) 二重受信メッセージの破棄」を参照してください。
チャネル情報引き継ぎ機能を使用しない場合,またはチャネル情報を引き継がない条件に該当する場合は,メッセージの二重送信が発生することがあります。その場合は,メッセージ送達未確認状態の解決を行ってからTP1/Message Queueを終了してください。メッセージ送達未確認状態の解決については,「2.4.4(6)(a) メッセージの送達未確認状態の解決」を参照してください。