クラス RetryTemplate
java.lang.ObjectSE
org.springframework.retry.support.RetryTemplate
- 実装されたすべてのインターフェース:
RetryOperations
再試行セマンティクスを使用して操作の実行を簡素化するテンプレートクラス。
再試行可能な操作は、RetryCallback
インターフェースの実装にカプセル化され、提供されている実行メソッドの 1 つを使用して実行されます。
デフォルトでは、Exception
SE または Exception
SE のサブクラスがスローされた場合、操作は再試行されます。この動作は、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
フィールドサマリー
フィールドコンストラクターのサマリー
コンストラクター方法の概要
修飾子と型メソッド説明static RetryTemplateBuilder
builder()
Fluent API を使用して RetryTemplate を構成するためのメインエントリポイント。protected boolean
canRetry
(RetryPolicy retryPolicy, RetryContext context) 進行中の再試行を続行するかどうかを決定します。protected void
close
(RetryPolicy retryPolicy, RetryContext context, RetryState state, boolean succeeded) 必要に応じてキャッシュをクリーンアップし、提供されたコンテキストを閉じます (フラグが処理が成功したことを示している場合)。static RetryTemplate
新しいデフォルトインスタンスを作成します。protected <T,
E extends ThrowableSE>
TdoExecute
(RetryCallback<T, E> retryCallback, RecoveryCallback<T> recoveryCallback, RetryState state) ポリシーで許可されている場合はコールバックを 1 回実行し、そうでない場合はリカバリコールバックを実行します。final <T,
E extends ThrowableSE>
Texecute
(RetryCallback<T, E> retryCallback) コールバックが成功するか、ポリシーによって停止するように指示されるまで、コールバックの実行を続けます。停止する場合は、コールバックによってスローされた最新の例外が再スローされます。final <T,
E extends ThrowableSE>
Texecute
(RetryCallback<T, E> retryCallback, RecoveryCallback<T> recoveryCallback) コールバックが成功するか、ポリシーによって停止するように指示されるまでコールバックの実行を続けます。停止するように指示された場合は、リカバリコールバックが実行されます。final <T,
E extends ThrowableSE>
Texecute
(RetryCallback<T, E> retryCallback, RecoveryCallback<T> recoveryCallback, RetryState retryState) ポリシーで許可されている場合はコールバックを 1 回実行し、発生した例外を再スローして、クライアントが後で同じタスクを再提示できるようにします。final <T,
E extends ThrowableSE>
Texecute
(RetryCallback<T, E> retryCallback, RetryState retryState) ポリシーで許可されている場合はコールバックを 1 回実行し、発生した例外を再スローして、クライアントが後で同じタスクを再提示できるようにします。protected <T> T
handleRetryExhausted
(RecoveryCallback<T> recoveryCallback, RetryContext context, RetryState state) 最後の試行が失敗した後に実行するアクション。boolean
少なくとも 1 つのリスナーが登録されている場合は true を返します。protected RetryContext
open
(RetryPolicy retryPolicy, RetryState state) 状態が null でない場合は、キャッシュ内の既存の値を確認してRetryPolicy
に委譲します。void
registerListener
(RetryListener listener) リストの最後に追加のリスナーを登録します。void
registerListener
(RetryListener listener, int index) 指定されたインデックスに追加のリスナーを登録します。protected void
registerThrowable
(RetryPolicy retryPolicy, RetryState state, RetryContext context, ThrowableSE e) protected <E extends ThrowableSE>
voidrethrow
(RetryContext context, StringSE message, boolean wrap) void
setBackOffPolicy
(BackOffPolicy backOffPolicy) BackOffPolicy
の Setter。void
setListeners
(RetryListener[] listeners) リスナーの皆様へ Setter。void
setLogger
(org.apache.commons.logging.Log logger) Log
の Setter。void
setRetryContextCache
(RetryContextCache retryContextCache) RetryContextCache
のパブリック setter。void
setRetryPolicy
(RetryPolicy retryPolicy) RetryPolicy
の Setter。void
setThrowLastExceptionOnExhausted
(boolean throwLastExceptionOnExhausted) すべての再試行が失敗したときに、最後の例外を再スローするか、ExhaustedRetryException
にラップするかを指定します。protected boolean
shouldRethrow
(RetryPolicy retryPolicy, RetryContext context, RetryState state) RetryCallback
で例外をキャッチした後の動作を決定するサブクラスの拡張ポイント。
フィールドの詳細
logger
protected org.apache.commons.logging.Log logger
コンストラクターの詳細
RetryTemplate
public RetryTemplate()
メソッドの詳細
builder
Fluent API を使用して RetryTemplate を構成するためのメインエントリポイント。使用例と詳細については、RetryTemplateBuilder
を参照してください。- 戻り値:
- デフォルトの動作がプリセットされた RetryTemplateBuilder の新しいインスタンス。手動設定時に上書きできます
- 導入:
- 1.3
defaultInstance
新しいデフォルトインスタンスを作成します。デフォルトインスタンスのプロパティについては、RetryTemplateBuilder
ドキュメントで説明されています。- 戻り値:
- デフォルトの動作を持つ RetryTemplate の新しいインスタンス
- 導入:
- 1.3
setThrowLastExceptionOnExhausted
public void setThrowLastExceptionOnExhausted(boolean throwLastExceptionOnExhausted) すべての再試行が失敗したときに、最後の例外を再スローするか、ExhaustedRetryException
にラップするかを指定します。デフォルトはfalse
です。指定された状態 (例:StatefulRetryOperationsInterceptor
) の場合にのみ適用されます。- パラメーター:
throwLastExceptionOnExhausted
- throwLastExceptionOnExhausted を設定する
setRetryContextCache
RetryContextCache
のパブリック setter。- パラメーター:
retryContextCache
- 設定するRetryContextCache
setListeners
リスナー用の Setter。リスナーは再試行ブロックの前後 (つまり、すべての試行の前後)、エラー時 (すべての試行) に実行されます。- パラメーター:
listeners
-RetryListener
s- 関連事項:
registerListener
リストの最後に追加のリスナーを登録します。- パラメーター:
listener
-RetryListener
- 関連事項:
registerListener
指定されたインデックスに追加のリスナーを登録します。- パラメーター:
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
BackOffPolicy
の Setter。- パラメーター:
backOffPolicy
-BackOffPolicy
setRetryPolicy
RetryPolicy
の Setter。- パラメーター:
retryPolicy
-RetryPolicy
execute
コールバックが成功するか、ポリシーによって停止するように指示されるまで、コールバックの実行を続けます。停止する場合は、コールバックによってスローされた最新の例外が再スローされます。- 次で指定:
- インターフェース
RetryOperations
のexecute
- 型パラメーター:
T
- 戻り値E
- スローする例外- パラメーター:
retryCallback
-RetryCallback
- 戻り値:
- 呼び出しが成功したときに
RetryCallback
によって返される値。 - 例外:
TerminatedRetryException
- 再試行がリスナーによって手動で終了された場合。E
- 再試行が失敗したときにRetryCallback
によって発生したException
SE。- 関連事項:
execute
public final <T,E extends ThrowableSE> T execute(RetryCallback<T, E> retryCallback, RecoveryCallback<T> recoveryCallback) throws Eコールバックが成功するか、ポリシーによって停止するように指示されるまでコールバックの実行を続けます。停止するように指示された場合は、リカバリコールバックが実行されます。- 次で指定:
- インターフェース
RetryOperations
のexecute
- 型パラメーター:
T
- 返す型E
- 例外の種類- パラメーター:
retryCallback
-RetryCallback
recoveryCallback
-RecoveryCallback
- 戻り値:
- 呼び出しが成功した場合に
RetryCallback
によって返される値、それ以外の場合にRecoveryCallback
によって返される値。 - 例外:
TerminatedRetryException
- 再試行がリスナーによって手動で終了された場合。E
- 失敗した再試行によって発生したException
SE。- 関連事項:
execute
public final <T,E extends ThrowableSE> T execute(RetryCallback<T, E> retryCallback, RetryState retryState) throws E, ExhaustedRetryExceptionポリシーで許可されている場合はコールバックを 1 回実行し、発生した例外を再スローして、クライアントが後で同じタスクを再提示できるようにします。- 次で指定:
- インターフェース
RetryOperations
のexecute
- 型パラメーター:
T
- 戻り値の型E
- 返される例外の型- パラメーター:
retryCallback
-RetryCallback
retryState
-RetryState
- 戻り値:
- 呼び出しが成功した場合に
RetryCallback
によって返される値、それ以外の場合にRecoveryCallback
によって返される値。 - 例外:
ExhaustedRetryException
- 再試行回数が上限に達した場合。E
-RecoveryCallback
によって発生したException
SE。- 関連事項:
execute
public final <T,E extends ThrowableSE> T execute(RetryCallback<T, E> retryCallback, RecoveryCallback<T> recoveryCallback, RetryState retryState) throws E, ExhaustedRetryExceptionポリシーで許可されている場合はコールバックを 1 回実行し、発生した例外を再スローして、クライアントが後で同じタスクを再提示できるようにします。- 次で指定:
- インターフェース
RetryOperations
のexecute
- 型パラメーター:
T
- 戻り値の型E
- 例外型- パラメーター:
retryCallback
-RetryCallback
recoveryCallback
-RecoveryCallback
retryState
-RetryState
- 戻り値:
- 呼び出しが成功した場合に
RetryCallback
によって返される値、それ以外の場合にRecoveryCallback
によって返される値。 - 例外:
E
- 再試行が失敗したときにRecoveryCallback
によって発生したException
SE。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
進行中の再試行を続行するかどうかを決定します。このメソッドは、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
状態が 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
RetryCallback
で例外をキャッチした後の動作を決定するサブクラスの拡張ポイント。通常のステートレス動作では再スローは行われませんが、状態がある場合は再スローされます。- パラメーター:
retryPolicy
- 再試行ポリシーcontext
- 現在のコンテキストstate
- 現在の retryState- 戻り値:
- 状態が null ではないが、サブクラスが別の選択をする可能性がある場合は true