Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引


3.4.11 DBキューメッセージスキップ機能

DBキューから読み出したメッセージが不正なメッセージである場合,そのメッセージをスキップすることで業務を続行できます。また,メッセージ読み出しトランザクションで障害が発生した場合も,障害の発生時に読み出していたメッセージをスキップすることで,読み出しを停止することなく次のメッセージを読み出せます。

メッセージをスキップするか,DBキューを読み出し停止にするかは,dbqgrpdef定義コマンドの-sオプションでDBキューグループごとに定義します。読み出しを停止する場合は,ロールバックしたDBキューが読み出し停止になります。同一グループ内のほかのDBキューについては,読み出し停止にしません。

メッセージをスキップした場合は,KFSB55612-Wメッセージが出力されます。

〈この項の構成〉

(1) メッセージスキップの対象

メッセージスキップの対象になるのは,AP間通信のDBキューでトランザクション開始時に読み出したメッセージです。次の関数の発行でトランザクションがロールバックした場合にメッセージをスキップします。次の関数の発行以外でロールバックした場合は,メッセージをスキップしません。

なお,ユーザキューアクセスの場合,メッセージスキップはできません。

(2) メッセージスキップの処理で障害が発生した場合

メッセージスキップの処理で障害が発生した場合,メッセージスキップの処理を中止し,DBキューを読み出し停止にします。DBキューの読み出しを再開すると,再度同じメッセージを読み出すため,必要に応じて再度トランザクションをロールバックするか,DBキューの読み出しを再開する前にeedbqskipコマンドを実行して,不要なメッセージをスキップしてください。

また,メッセージスキップの処理を実行する前に,TP1/EEがプロセスダウンまたは計画停止Bによって停止した場合もメッセージはスキップされません。TP1/EEのリラン後に再度同じメッセージを読み出すため,必要に応じて再度トランザクションをロールバックしてください。