非同期アプリケーション連携実行基盤では、エラーメッセージ退避キューを定義することで、異常となったメッセージをエラーメッセージ退避キューへ自動的に退避することができます。
エラーメッセージ退避キューがフロー定義で指定されている場合に異常が発生したときは、フロー定義ツールで指定されたリトライ回数だけ処理をリトライします。リトライしても異常が改善されない場合は、業務処理をロールバックし、メッセージをエラーメッセージ退避キューに送信します。
エラーメッセージ退避キューにメッセージが退避されたとき、フロー定義で結果受信キューが定義されている場合にだけ処理結果のメッセージが送信されます。突き放し型のフロー起動(非同期型)を行った場合は、処理結果の取得APIを使用した時点で異常を検出することができます。また、待ち合わせ型のフロー起動(同期型)の場合は、異常メッセージの到着時点で待ち合わせ型フロー起動APIが業務処理開始アプリケーションへ復帰し、異常を検出することができます。
突き放し型のフロー起動は結果を待たないフロー起動、待ち合わせ型は結果を待つフロー起動になります。詳細については、“2.6 業務処理開始アプリケーション”を参照してください。
復旧方法
エラーメッセージ退避キューに格納されたメッセージは、非同期アプリケーション連携実行基盤が提供するコマンドを用いて、異常となったメッセージ内容の修正、および異常となったキューへ再送信し、処理を復旧することができます。
エラーメッセージ退避定義における注意事項を以下に示します。
エラーメッセージ退避キューは、フロー定義ツール画面上で、任意のサーバのキューを指定することができます。
エラーメッセージ退避キューで指定するキューは、すべてのフロー定義で指定するルーティング定義でアクティビティに関連付けられていないキューを指定してください。
異常の状態によっては、異常となったメッセージをエラーメッセージ退避キューへ送信できない場合もあります。エラーメッセージ退避キューへ送信できない異常の場合は、メッセージをシリアライズファイルへ退避します。シリアライズファイルの詳細は、“■メッセージのシリアライズファイル退避機能”を参照してください。
■メッセージのシリアライズファイル退避機能
異常メッセージを格納するエラーメッセージ退避キューが設定されていない場合、またはエラーメッセージ退避キューへの送信中に異常が発生した場合、異常となったメッセージはシリアライズファイルとして出力されます。
シリアライズファイルへの出力にも失敗した場合は、該当するワークユニットを停止します。その場合は、シリアライズファイルへの出力失敗の原因を取り除き、ワークユニットを再起動して業務を再開してください。
また、シリアライズファイルへの退避が発生した場合、フロー定義で結果受信キューが定義されている場合にだけ、処理結果のメッセージが業務処理開始アプリケーションに送信されます。突き放し型のフロー起動(非同期型)を行った場合は、処理結果の取得APIを使用した時点で異常を検出することができます。また、待ち合わせ型(同期型)の場合は、異常メッセージの到着時点で待ち合わせ型フロー起動APIが業務処理開始アプリケーションへ復帰し、異常を検出することができます。
注意
シリアライズファイルの出力に失敗した場合は、すぐに異常としないで、フロー定義で指定したリトライ回数だけ再試行します。再試行しても問題が解決されない場合は、システムが動作不安定な状態と判断し、ワークユニットを停止します。ワークユニットが停止された場合、業務処理実行アプリケーションの処理を含めメッセージ処理は、ロールバックされてキューに戻った状態になります。
シリアライズファイル格納場所
【出力ファイル名】
APFW_フロー定義名[_プロセス番号]_異常発生時刻[_通番].ser
【出力場所】
/opt/FJSVibs/var/ser
[Interstageのインストールディレクトリ]\BAS\var\ser
以下にシリアライズファイル名の例を示します。
“APFW_フロー定義A_041010_153010739.ser”
シリアライズファイル名にはフロー定義名が設定されます。同じフロー定義名で異常が複数発生しメッセージをシリアライズファイルへ複数出力する場合、同じ異常発生時刻単位にシリアライズファイル名が重複する可能性があります。その場合は、シリアライズファイル名の重複を避けるため通番がシリアライズファイル名へ付与されます。
非同期ワークユニット、またはメッセージ消去時の退避機能からシリアライズファイルを出力した場合、プロセス番号がシリアライズファイル名へ付与されます。
注意
ファイル名の通番は、重複したファイル名がすでに存在する場合に、4桁で0001から付与されます。
異常発生時刻は、以下のフォーマットで付与されます。
“西暦下2桁月日_時分秒ミリ秒”
シリアライズファイル名にコリレーションIDは含まれません。異常が発生した際に出力されたシステムログファイルから、異常が発生したコリレーションIDとシリアライズファイル名を識別して復旧する運用になります。
復旧方法
シリアライズされたファイルは、非同期アプリケーション連携実行基盤が提供するコマンドを用いて業務データを修正し、異常となったキューへ再送信して復旧を行うことができます。コマンドの詳細は、“Interstage Business Application Server リファレンス”を参照してください。
メッセージ内の業務データに異常がない場合
apfwrecovmsgコマンドを用いて、シリアライズファイルをエラーが発生したキューに戻し、ルーティングを再開します。
メッセージ内の業務データに異常がある場合
apfwconvfileコマンドを用いて、シリアライズファイルからメッセージの内容を編集可能な形式のメッセージファイルへ出力し、メッセージ内容を正常な状態に戻します。
apfwrecovfileコマンドを用いて、メッセージをエラーが発生したキューに戻し、ルーティングを再開します。