クラス RetryTemplate

java.lang.ObjectSE
org.springframework.retry.support.RetryTemplate
実装されたすべてのインターフェース:
RetryOperations

public class RetryTemplate extends ObjectSE implements RetryOperations
再試行セマンティクスを使用して操作の実行を簡素化するテンプレートクラス。

再試行可能な操作は、RetryCallback インターフェースの実装にカプセル化され、提供されている実行メソッドの 1 つを使用して実行されます。

デフォルトでは、ExceptionSE または ExceptionSE のサブクラスがスローされた場合、操作は再試行されます。この動作は、setRetryPolicy(RetryPolicy) メソッドを使用して変更できます。

また、デフォルトでは、各操作は最大 3 回再試行され、その間にバックオフはありません。この動作は、setRetryPolicy(RetryPolicy) および setBackOffPolicy(BackOffPolicy) プロパティを使用して構成できます。BackOffPolicy は、各再試行間の一時停止時間を制御します。

新しいインスタンスは、builder() を介してスムーズに構成できます。例:

 
 RetryTemplate.builder()
                 .maxAttempts(10)
                 .fixedBackoff(1000)
                 .build();
 
その他の例と詳細については、RetryTemplateBuilder を参照してください。

このクラスはスレッドセーフであり、操作の実行時や構成の変更時に同時アクセスするのに適しています。そのため、再試行回数や使用される BackOffPolicy をオンザフライで変更することができ、進行中の再試行可能な操作には影響しません。

作成者:
Rob Harrop, Dave Syer, Gary Russell, Artem Bilan, Josh Long, Aleksandr Shamukov, Emanuele Ivaldi, Tobias Soloschenko
  • フィールドの詳細

    • logger

      protected org.apache.commons.logging.Log logger
  • コンストラクターの詳細

    • RetryTemplate

      public RetryTemplate()
  • メソッドの詳細

    • builder

      public static RetryTemplateBuilder builder()
      Fluent API を使用して RetryTemplate を構成するためのメインエントリポイント。使用例と詳細については、RetryTemplateBuilder を参照してください。
      戻り値:
      デフォルトの動作がプリセットされた RetryTemplateBuilder の新しいインスタンス。手動設定時に上書きできます
      導入:
      1.3
    • defaultInstance

      public static RetryTemplate defaultInstance()
      新しいデフォルトインスタンスを作成します。デフォルトインスタンスのプロパティについては、RetryTemplateBuilder ドキュメントで説明されています。
      戻り値:
      デフォルトの動作を持つ RetryTemplate の新しいインスタンス
      導入:
      1.3
    • setThrowLastExceptionOnExhausted

      public void setThrowLastExceptionOnExhausted(boolean throwLastExceptionOnExhausted)
      すべての再試行が失敗したときに、最後の例外を再スローするか、ExhaustedRetryException にラップするかを指定します。デフォルトは false です。指定された状態 (例: StatefulRetryOperationsInterceptor) の場合にのみ適用されます。
      パラメーター:
      throwLastExceptionOnExhausted - throwLastExceptionOnExhausted を設定する
    • setRetryContextCache

      public void setRetryContextCache(RetryContextCache retryContextCache)
      RetryContextCache のパブリック setter。
      パラメーター:
      retryContextCache - 設定する RetryContextCache
    • setListeners

      public void setListeners(RetryListener[] listeners)
      リスナー用の Setter。リスナーは再試行ブロックの前後 (つまり、すべての試行の前後)、エラー時 (すべての試行) に実行されます。
      パラメーター:
      listeners - RetryListener s
      関連事項:
    • registerListener

      public void registerListener(RetryListener listener)
      リストの最後に追加のリスナーを登録します。
      パラメーター:
      listener - RetryListener
      関連事項:
    • registerListener

      public void registerListener(RetryListener listener, int index)
      指定されたインデックスに追加のリスナーを登録します。
      パラメーター:
      listener - RetryListener
      index - リスト内の位置。
      導入:
      1.3
      関連事項:
    • hasListeners

      public boolean hasListeners()
      少なくとも 1 つのリスナーが登録されている場合は true を返します。
      戻り値:
      リスナーが存在する場合は true です。
      導入:
      1.3
    • setLogger

      public void setLogger(org.apache.commons.logging.Log logger)
      Log の場合は Setter。適用されない場合は以下が使用されます。

      LogFactory.getLog(getClass())

      パラメーター:
      logger - 再試行テンプレートがログ記録に使用するロガー
      導入:
      2.0.10
    • setBackOffPolicy

      public void setBackOffPolicy(BackOffPolicy backOffPolicy)
      BackOffPolicy の Setter。
      パラメーター:
      backOffPolicy - BackOffPolicy
    • setRetryPolicy

      public void setRetryPolicy(RetryPolicy retryPolicy)
      RetryPolicy の Setter。
      パラメーター:
      retryPolicy - RetryPolicy
    • execute

      public final <T, E extends ThrowableSE> T execute(RetryCallback<T,E> retryCallback) throws E
      コールバックが成功するか、ポリシーによって停止するように指示されるまで、コールバックの実行を続けます。停止する場合は、コールバックによってスローされた最新の例外が再スローされます。
      次で指定:
      インターフェース RetryOperationsexecute 
      型パラメーター:
      T - 戻り値
      E - スローする例外
      パラメーター:
      retryCallback - RetryCallback
      戻り値:
      呼び出しが成功したときに RetryCallback によって返される値。
      例外:
      TerminatedRetryException - 再試行がリスナーによって手動で終了された場合。
      E - 再試行が失敗したときに RetryCallback によって発生した ExceptionSE
      関連事項:
    • execute

      public final <T, E extends ThrowableSE> T execute(RetryCallback<T,E> retryCallback, RecoveryCallback<T> recoveryCallback) throws E
      コールバックが成功するか、ポリシーによって停止するように指示されるまでコールバックの実行を続けます。停止するように指示された場合は、リカバリコールバックが実行されます。
      次で指定:
      インターフェース RetryOperationsexecute 
      型パラメーター:
      T - 返す型
      E - 例外の種類
      パラメーター:
      retryCallback - RetryCallback
      recoveryCallback - RecoveryCallback
      戻り値:
      呼び出しが成功した場合に RetryCallback によって返される値、それ以外の場合に RecoveryCallback によって返される値。
      例外:
      TerminatedRetryException - 再試行がリスナーによって手動で終了された場合。
      E - 失敗した再試行によって発生した ExceptionSE
      関連事項:
    • execute

      public final <T, E extends ThrowableSE> T execute(RetryCallback<T,E> retryCallback, RetryState retryState) throws E, ExhaustedRetryException
      ポリシーで許可されている場合はコールバックを 1 回実行し、発生した例外を再スローして、クライアントが後で同じタスクを再提示できるようにします。
      次で指定:
      インターフェース RetryOperationsexecute 
      型パラメーター:
      T - 戻り値の型
      E - 返される例外の型
      パラメーター:
      retryCallback - RetryCallback
      retryState - RetryState
      戻り値:
      呼び出しが成功した場合に RetryCallback によって返される値、それ以外の場合に RecoveryCallback によって返される値。
      例外:
      ExhaustedRetryException - 再試行回数が上限に達した場合。
      E - RecoveryCallback によって発生した ExceptionSE
      関連事項:
    • execute

      public final <T, E extends ThrowableSE> T execute(RetryCallback<T,E> retryCallback, RecoveryCallback<T> recoveryCallback, RetryState retryState) throws E, ExhaustedRetryException
      ポリシーで許可されている場合はコールバックを 1 回実行し、発生した例外を再スローして、クライアントが後で同じタスクを再提示できるようにします。
      次で指定:
      インターフェース RetryOperationsexecute 
      型パラメーター:
      T - 戻り値の型
      E - 例外型
      パラメーター:
      retryCallback - RetryCallback
      recoveryCallback - RecoveryCallback
      retryState - RetryState
      戻り値:
      呼び出しが成功した場合に RetryCallback によって返される値、それ以外の場合に RecoveryCallback によって返される値。
      例外:
      E - 再試行が失敗したときに RecoveryCallback によって発生した ExceptionSE
      ExhaustedRetryException
      関連事項:
    • doExecute

      protected <T, E extends ThrowableSE> T doExecute(RetryCallback<T,E> retryCallback, RecoveryCallback<T> recoveryCallback, RetryState state) throws E, ExhaustedRetryException
      ポリシーで許可されている場合はコールバックを 1 回実行し、そうでない場合はリカバリコールバックを実行します。
      型パラメーター:
      T - 戻り値の型
      E - スローする例外の種類
      パラメーター:
      recoveryCallback - RecoveryCallback
      retryCallback - RetryCallback
      state - RetryState
      戻り値:
      T 再試行された値
      例外:
      ExhaustedRetryException - 再試行回数が上限に達した場合。
      E - 再試行操作が失敗した場合の例外
      関連事項:
    • canRetry

      protected boolean canRetry(RetryPolicy retryPolicy, RetryContext context)
      進行中の再試行を続行するかどうかを決定します。このメソッドは、RetryCallback が実行される前に、バックオフとオープンインターセプターの後に呼び出されます。
      パラメーター:
      retryPolicy - 適用するポリシー
      context - 現在の再試行コンテキスト
      戻り値:
      試行を続行できる場合は true
    • close

      protected void close(RetryPolicy retryPolicy, RetryContext context, RetryState state, boolean succeeded)
      必要に応じてキャッシュをクリーンアップし、提供されたコンテキストを閉じます (フラグが処理が成功したことを示している場合)。
      パラメーター:
      retryPolicy - RetryPolicy
      context - RetryContext
      state - RetryState
      succeeded - クローズが成功したかどうか
    • registerThrowable

      protected void registerThrowable(RetryPolicy retryPolicy, RetryState state, RetryContext context, ThrowableSE e)
    • open

      protected RetryContext open(RetryPolicy retryPolicy, RetryState state)
      状態が null でない場合は、キャッシュ内の既存の値を確認して RetryPolicy に委譲します。
      パラメーター:
      state - RetryState
      retryPolicy - コンテキスト作成を委譲する RetryPolicy
      戻り値:
      再試行コンテキスト(新しいもの、または同じ状態に遭遇した前回に使用されたもの)
    • handleRetryExhausted

      protected <T> T handleRetryExhausted(RecoveryCallback<T> recoveryCallback, RetryContext context, RetryState state) throws ThrowableSE
      最終試行が失敗した後に実行するアクション。状態がある場合はキャッシュをクリーンアップします。回復コールバックがある場合はそれを実行し、その結果を返します。それ以外の場合は例外をスローします。
      型パラメーター:
      T - 分類する型
      パラメーター:
      recoveryCallback - 回復のためのコールバック (null である可能性があります)
      context - 現在の再試行コンテキスト
      state - RetryState
      戻り値:
      T 返すペイロード
      例外:
      ExceptionSE - コールバックがコールバックを実行し、コールバックが存在せず状態が null の場合は、コンテキストからの最後の例外
      ExhaustedRetryException - 状態が null でなく、回復コールバックがない場合
      ThrowableSE - エラーがある場合
    • rethrow

      protected <E extends ThrowableSE> void rethrow(RetryContext context, StringSE message, boolean wrap) throws E
      例外:
      E extends ThrowableSE
    • shouldRethrow

      protected boolean shouldRethrow(RetryPolicy retryPolicy, RetryContext context, RetryState state)
      RetryCallback で例外をキャッチした後の動作を決定するサブクラスの拡張ポイント。通常のステートレス動作では再スローは行われませんが、状態がある場合は再スローされます。
      パラメーター:
      retryPolicy - 再試行ポリシー
      context - 現在のコンテキスト
      state - 現在の retryState
      戻り値:
      状態が null ではないが、サブクラスが別の選択をする可能性がある場合は true