3.4.8 DBキュー書き込み抑止機能
DBキュー機能では,一つのサーバでDBキューからメッセージを読み出します。そのため,DBキュー読み出しサーバの終了後は,ほかのサーバがDBキューに書き込むメッセージを読み出せなくなるため,DBキューが未読み出しメッセージで満杯になるおそれがあります。この現象は,サーバ終了前にeedbqwtprコマンドを実行してDBキューへのメッセージの書き込みを抑止することによって回避できます。メッセージの書き込み抑止状態は,再度サーバを正常開始する際に解除されます。
また,TP1/EE以外の製品(Cosminexus Reliable Messagingなど)からのメッセージの書き込みも抑止できます。
DBキューの書き込み抑止および書き込み抑止解除の流れを次の図に示します。
- 〈この項の構成〉
(1) 注意事項
-
eedbqwtprコマンドで書き込みを抑止しているDBキューに対して,ee_dbq_msgput関数でDBキューまたはDBキューグループを指定してメッセージの書き込み要求を行った場合,ee_dbq_msgput関数は正常に終了し,メッセージ書き込み要求を行ったトランザクションをロールバックしてからエラートランザクション(ERRTRNR)を起動します。ただし,ee_trn_chained_commit関数を呼び出して連鎖モードのコミット要求をした場合,ee_trn_chained_commit関数はエラーリターンし,エラートランザクション(ERRTRNR)を起動しません。
また,DBキューグループを指定してメッセージの書き込み要求を行った場合は,eedbqwtprコマンドで書き込みを抑止しているDBキューを,eedbqisltコマンドで縮退させることによって,DBキューグループ指定の対象外とする必要があります。
-
eedbqwtprコマンドは,DBキュー機能オプションがTYPE1のDBキューグループのDBキューに対して実行できます。DBキュー機能オプションは,DBキュー機能関連定義のdbqgrpdef定義コマンドの-kオプションで指定します。DBキュー機能オプションの詳細については,「6.6.1 DBキュー機能オプション」を参照してください。
-
DBキュー読み出しサーバが終了した場合や障害でダウンした場合は,eedbqwtprコマンドを実行できません。この場合は,DBキュー読み出しサーバをeedbqchgrコマンドで変更してください。DBキュー読み出しサーバの変更については,「3.4.7 DBキュー読み出しサーバ変更機能」を参照してください。
-
DBキューは,作成完了と同時に書き込み可能な状態となります。