6.6.5 DBキュー読み出しサーバ変更機能の運用
DBキューからメッセージを読み出すサーバを変更する場合の運用方法について説明します。
- 〈この項の構成〉
(1) 読み出し先DBキューのステータス
読み出し先DBキューのステータスとは,DBキューからメッセージを読み出すサーバを示す情報です。この情報は,DBキュー読み出しサーバを変更する際の判断基準となります。
(a) 読み出し先DBキューのステータスの種類
読み出し先DBキューのステータスには,次の3種類があります。
-
自サーバ読み出し
自システムのサーバで,DBキューからメッセージを読み出す状態のことです。
-
他サーバ読み出し
自システム以外のサーバで,DBキューからメッセージを読み出す状態のことです。
-
なし
DBキューからメッセージを読み出すサーバが存在しない状態のことです。
- 注意事項
-
「自サーバ読み出し」と「他サーバ読み出し」のステータスは,相対的な関係にあります。例えば,次に示す図では,読み出しサーバ変更後のDBキューのステータスは,サーバ1側から見た場合は「他サーバ読み出し」となり,サーバ2側から見た場合は「自サーバ読み出し」となります。
(b) 読み出し先DBキューのステータスの変更
読み出し先DBキューのステータスは,次に示すタイミングで「自サーバ読み出し」に変更されます。
-
DBキュー機能関連定義のdbqgrpdef定義コマンドの-oオプションにmy(自サーバ読み出し)を指定したTP1/EE(読み出しサーバ)が正常開始したとき
-
eedbqchgrコマンドを実行して読み出しサーバを変更したとき
(2) TP1/EEの開始モードと読み出し先DBキューのステータスの遷移
TP1/EE(DBキュー読み出しサーバ)の開始モードと,読み出し先DBキューのステータスの遷移を次の表に示します。
|
項番 |
TP1/EEの開始モード |
dbqgrpdef定義コマンドの-oオプションの指定値 |
読み出し先DBキューのステータス |
|
|---|---|---|---|---|
|
サーバ開始前 |
サーバ開始時 |
|||
|
1 |
正常開始または強制正常開始 |
my(自サーバ読み出し) |
なし |
自サーバ読み出し |
|
2 |
自サーバ読み出し |
自サーバ読み出し |
||
|
3 |
他サーバ読み出し (読み出しサーバがTP1/EEの場合) |
自サーバ読み出し |
||
|
4 |
他サーバ読み出し (読み出しサーバがTP1/EE以外の場合) |
他サーバ読み出し※1 |
||
|
5 |
other(他サーバ読み出し) |
なし |
なし |
|
|
6 |
自サーバ読み出し |
なし |
||
|
7 |
他サーバ読み出し |
他サーバ読み出し |
||
|
8 |
再開始 |
my(自サーバ読み出し) |
なし |
なし※2 |
|
9 |
自サーバ読み出し |
自サーバ読み出し |
||
|
10 |
他サーバ読み出し |
他サーバ読み出し |
||
|
11 |
other(他サーバ読み出し) |
なし |
なし |
|
|
12 |
自サーバ読み出し |
自サーバ読み出し |
||
|
13 |
他サーバ読み出し |
他サーバ読み出し |
||
- 注※1
-
DBキュー読み出しサーバを,TP1/EE以外の製品(Cosminexus Reliable Messagingなど)からTP1/EEに変更することはできません。したがって,正常開始時または強制正常開始時でも,読み出し先DBキューのステータスは変更されません。
- 注※2
-
読み出し先DBキューのステータスが「なし」である状態が続くと,DBキューが未読み出しメッセージで満杯になる現象が発生するおそれがあります。この現象を回避するために,DBキュー機能関連定義のdbq_readcheckmsg_intervalオペランドで,DBキュー読み出しサーバが存在しないことを警告するKFSB45612-Wメッセージを出力するように指定してください。
(3) 読み出し先DBキューのステータスの遷移例
読み出し先DBキューのステータスの遷移例について説明します。
(a) 「自サーバ読み出し」のステータスで自サーバが正常終了する場合
「自サーバ読み出し」のステータスで自サーバが正常終了する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。
|
|
(b) eedbqchgrコマンドを実行して読み出しサーバを変更する場合
eedbqchgrコマンドを実行して読み出しサーバを変更する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。
|
|
-
サーバ1を正常開始します。
dbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは「自サーバ読み出し」になります(表6-18の項番1)。
-
サーバ1でDBキュー1からメッセージを読み出します。
-
サーバ2でeedbqchgrコマンドを実行して,DBキュー読み出しサーバをDBキュー2に変更します。
DBキュー1のステータスは「他サーバ読み出し」(サーバ2側から見た場合は「自サーバ読み出し」)に変更されます。
-
サーバ1を正常終了します。
-
サーバ2でDBキュー1からメッセージを読み出します。
-
サーバ1を再度正常開始します。
dbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは「自サーバ読み出し」に変更されます(表6-18の項番3)。
(c) 「他サーバ読み出し」のステータスで他サーバが正常終了する場合
「他サーバ読み出し」のステータスで他サーバが正常終了する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。
|
|
-
サーバ1を正常開始します。
dbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは「自サーバ読み出し」になります(表6-18の項番1)。
-
サーバ1でDBキュー1からメッセージを読み出します。
-
サーバ2でeedbqchgrコマンドを実行して,DBキュー読み出しサーバをサーバ2に変更します。
DBキュー1のステータスは「他サーバ読み出し」(サーバ2側から見た場合は「自サーバ読み出し」)に変更されます。
-
サーバ2でDBキュー1からメッセージを読み出します。
-
サーバ2を正常終了します。
-
サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバを割り当てます。
DBキュー1のステータスは「自サーバ読み出し」に変更されます。
(d) 「自サーバ読み出し」のステータスで,正常開始時に「他サーバ読み出し」を指定する場合
「自サーバ読み出し」のステータスで,正常開始時に「他サーバ読み出し」を指定する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。
|
|
-
サーバ2を正常開始します。
サーバ2でdbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは,サーバ1側から見た場合は「他サーバ読み出し」(サーバ2側から見た場合は「自サーバ読み出し」)になります(表6-18の項番1)。
-
サーバ2でDBキュー1からメッセージを読み出します。
-
サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバをサーバ1に変更します。
DBキュー1のステータスは「自サーバ読み出し」に変更されます。
-
サーバ1でDBキュー1からメッセージを読み出します。
-
サーバ1を正常終了します。
-
サーバ1を再度正常開始します。
dbqgrpdef定義コマンドの-oオプションにotherを指定することで,DBキュー1のステータスは「なし」に変更されます(表6-18の項番6)。
-
サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバを割り当てます。
DBキュー1のステータスは「自サーバ読み出し」に変更されます。
(e) DBキューのステータスを変更する前に自サーバが計画停止Bまたはプロセスダウンで終了する場合
DBキューのステータスを変更する前に自サーバが計画停止Bまたはプロセスダウンで終了する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。
|
|
-
サーバ1を正常開始します。
-
DBキュー1のステータスを変更する前に,サーバ1が計画停止Bまたはプロセスダウンで終了します。
DBキュー1のステータスは「なし」のままとなります。
-
サーバ1を再開始します。
dbqgrpdef定義コマンドの-oオプションにmyを指定していますが,DBキュー1のステータスは「なし」のままとなります(表6-18の項番8)。
DBキュー1のステータスが「なし」である状態が続いた場合,DBキュー機能関連定義のdbq_readcheckmsg_intervalオペランドに指定した間隔で,KFSB45612-Wメッセージが出力されます。
-
サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバを割り当てます。
DBキュー1のステータスは「自サーバ読み出し」に変更されます。
(f) 自サーバが計画停止Bまたはプロセスダウンで終了し,他サーバが正常終了する場合
自サーバが計画停止Bまたはプロセスダウンで終了し,他サーバが正常終了する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。
|
|
-
サーバ2を正常開始します。
サーバ2でdbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは,サーバ1側から見た場合は「他サーバ読み出し」(サーバ2側から見た場合は「自サーバ読み出し」)になります(表6-18の項番1)。
-
サーバ2でDBキュー1からメッセージを読み出します。
-
サーバ1が計画停止Bまたはプロセスダウンで終了します。
-
サーバ2を正常終了します。
-
サーバ1を再開始します。
dbqgrpdef定義コマンドの-oオプションにmyを指定していますが,DBキュー1のステータスは「他サーバ読み出し」のままとなります(表6-18の項番10)。
-
サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバをサーバ1に変更します。
DBキュー1のステータスは「自サーバ読み出し」に変更されます。
(4) DBキュー読み出しサーバが複数ある場合
DBキューからのメッセージの読み出し処理中にeedbqchgrコマンドを実行すると,二つのサーバが同一のメッセージを読み出すおそれがあります。この現象を回避するために,DBキュー読み出しサーバが複数ある場合,TP1/EEは,最初にコミットしたメッセージ読み出しトランザクションを優先し,その他のサーバのメッセージ読み出しトランザクションをロールバックします。
DBキュー読み出しサーバが複数ある場合の処理の流れを次の図に示します。
|
|
-
サーバ2を正常開始します。
サーバ2でdbqgrpdef定義コマンドの-oオプションにmyを指定しておきます。
-
サーバ2で,DBキュー1のメッセージ読み出しトランザクションを開始します。
-
サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバをサーバ1に変更します。
-
サーバ1で,DBキュー1のメッセージ読み出しトランザクションを開始します。
-
サーバ1で,メッセージ読み出しトランザクションがコミットします。
コミット後,未読み出しメッセージがなくなるまでメッセージ読み出しトランザクションを繰り返し起動します。
-
サーバ2で,メッセージ読み出しトランザクションをロールバックします。