非同期アプリケーション連携実行基盤では、アプリケーションに異常が発生した場合の処理として、以下の4つの異常処理機能を提供しています。
リトライ機能
アプリケーション処理で異常が発生した場合は、以下のリトライ処理を行います。
異常処理定義でリトライ設定がされていた場合
アプリケーション処理を再度実行します。
ワークユニットのリトライ設定がされていた場合
異常処理定義によるリトライでアプリケーション処理の異常が解消されず、かつワークユニットのリトライ設定がされていた場合、リトライ設定に従って、メッセージの受信処理から再度行います。
補償ルート制御機能
通過してきたルートを逆戻りする取消しメッセージを送信します。補償ルートを実行する契機となるアプリケーション例外(Javaの場合)、またはエラーコード(COBOLの場合)を指定することができます。補償ルートを実行することで、業務全体としての一貫性を保証することができます。
メッセージ退避機能
異常となったメッセージをエラーメッセージ退避キューに送信します。退避されたメッセージは、非同期アプリケーション連携実行基盤が提供するコマンドによりリカバリを行うことができます。
代行ルート機能
別のルートへメッセージを送信します。代行ルートを使用することで、実行ルートに異常が発生したときでも業務を継続することができます。
補償ルート制御機能、およびメッセージ退避機能を異常処理機能と呼びます。
異常処理機能が設定されていない場合、またはエラーメッセージ退避キューへメッセージを送信中に異常が発生した場合に、メッセージはシリアライズファイルに退避されます。さらに、シリアライズファイルへの退避にも失敗した場合は、ワークユニットを停止します。
これらの処理結果はシステムログへ出力されます。
シリアライズファイルについての詳細は、“2.4.4 メッセージ退避機能”の“■メッセージのシリアライズファイル退避機能”を参照してください。
上記の処理は組み合わせて使用することができます。異常が発生した箇所によって処理の優先順位が変わります。以下に、アプリケーション例外発生時、メッセージ送信時、およびフローのタイムアウト時における異常処理の組み合わせと順序を示します。
アプリケーション異常が発生した場合
アプリケーション異常に対しては、リトライ機能およびメッセージ退避機能の組み合わせについて以下の3つから選択することができます。さらに、補償ルート制御機能も併用することができます。
組み合わせ | 説明 |
---|---|
リトライ機能のみ | 異常が発生したアプリケーション処理を、リトライ回数分だけ繰り返し実行します。 |
メッセージ退避機能のみ | 異常となったメッセージを、エラーメッセージ退避キューへ退避します。 |
リトライ機能+メッセージ退避機能 | リトライ回数分リトライしても異常が改善されない場合に、異常が発生したメッセージをエラーメッセージ退避キューへ退避します。 |
リトライ機能+メッセージ退避機能、および補償ルート制御機能が設定されていた場合は、以下の順序で異常処理を行います。
アプリケーション例外が発生すると、リトライを行います。
リトライでも異常が解消されない場合は、補償ルートが発行されます。
補償ルートで失敗した場合は、シリアライズファイルへメッセージが退避されます。
メッセージ送信で異常が発生した場合
メッセージ送信の異常に対するリトライ機能およびメッセージ退避機能の組み合わせについては、アプリケーション例外に対する設定と同一です。さらに、代行ルート制御機能および補償ルート制御機能も併用することができます。
リトライ機能+メッセージ退避機能、代行ルート機能、および補償ルート制御機能のすべての機能が設定されていた場合は、以下の順序で異常処理を行います。
実行ルートで異常が発生すると、代行ルートへの送信を試みます。
実行ルートと代行ルート両方の送信先のキューが閉塞状態の場合は、異常処理定義にかかわらずリトライしつづけます。この際、リトライ回数はカウントされません。
実行ルートと代行ルートどちらかでキュー閉塞以外の異常が発生した場合は、補償ルートが発行されます。
注意
実行ルートと代行ルート両方の送信先のキューが閉塞されていることにより送信失敗となる場合でも、メッセージの送信先が同報・分岐などの組み合わせにより複数の場合は、メッセージをロールバックしてメッセージ受信から再度行います。
補償ルートで失敗した場合は、シリアライズファイルへメッセージが退避されます。
フローのタイムアウトが発生した場合
フローのタイムアウトに対しては、異常処理機能の組み合わせについて以下の3つから選択することができます。
組み合わせ | 説明 |
---|---|
シリアライズファイル | 異常となったメッセージを、シリアライズファイルへ直接退避します。 |
メッセージ退避機能 | 異常となったメッセージを、エラーメッセージ退避キューへ退避します。 |
補償ルート制御機能 | 補償ルートが設定されていれば、補償ルートを発行します。 |
補償ルート制御機能が設定されていた場合は、以下の順序で異常処理を行います。
補償ルートが発行されます。
補償ルートで失敗した場合は、シリアライズファイルへメッセージが退避されます。