ホーム > ドキュメント > リトライ

リトライ

概要

一時的な障害をアプリケーションが処理できるようにします。
アプリケーションが『奉行クラウド』に接続するときに、一時的なネットワーク障害や、サーバー混雑などにより、 リクエストが失敗した処理を透過的に再試行(リトライ)することで、アプリケーションの安定性を向上できます。

クラウドの課題

アプリケーションは、クラウドで実行される『奉行クラウド』と通信するため、 この環境で発生する一時的な障害を考慮する必要があります。
障害とは、たとえば、ネットワーク接続が一瞬失われたり、『奉行クラウド』が一時的に利用できなくなったり、 『奉行クラウド』がビジー状態となってタイムアウトする、などの現象です。
通常は、一時的な障害は自動的に復旧するため、適切な待ち時間後にリトライすることで、 高い確率で処理を正常に実行できます。

解決方法

アプリケーションが、『奉行クラウド』と通信するときに障害が発生した場合、以下の方法で処理します。

キャンセルする

障害が一時的ではない場合、あるいは処理を繰り返しても成功する可能性が低い場合は、処理をキャンセルして、エラーを通知します。
たとえば、無効なアクセストークンを利用した処理は、何回リトライしても成功しません。

すぐにリトライする

障害が一時的なものと判断できる場合、失敗した処理をすぐにリトライします。
リトライをした場合でも、同じエラーが通知される可能性が低く、処理が正常に実行される可能性が高いためです。

時間をおいてリトライする

アプリケーションは、適切な待ち時間後にリトライします。
障害の原因が、ネットワーク障害やサーバー混雑の場合、接続の問題が解決するための時間が必要です。 そのため、アプリケーションは、リトライする前に適切な時間を待機してから処理をする必要があります。

アプリケーションがリトライをする場合、最大のリトライ回数、リトライの間隔を決めて、適切に処理してください。

リトライの判定

リトライの判定は、レスポンスヘッダーのステータスコードを利用します。
奉行クラウド API は、ステータスコードが 200 以外の場合は、エラーと判断できます。
詳細は、「ステータスコード」をご覧ください。

注意事項

リトライをする場合は次の点に注意してください。

  • アプリケーションの特性の応じたリトライをしてください。
    一部の重要ではない処理は、リトライを複数回実行して処理時間に影響を与えるよりも、失敗することをお勧めします。
    対話型の Web アプリケーションでは、数回のリトライを短い待ち時間で実行した後、適切なメッセージをユーザーに表示することをお勧めします。
    バッチ アプリケーションの場合は、リトライの待ち時間を指数関数的に長くしながら、何度もリトライするほうが適切である可能性があります。

  • 短い待ち時間で何回もリトライする攻撃的なリトライは、障害が発生しているサービスの処理をさらに低下させる可能性があります。
    アプリケーションの処理時間にも影響を与えるため、適切に処理をしてください。
    API は一定時間内に実行できる処理数を制限しています。
    そのため、短い待ち時間で何回もリトライすると上限を超えてしまい、一時的に API のリクエストを受け付けなくなります。
    レスポンスの情報については「レート・クォータ制限」をご覧ください。