アノテーションインターフェース Retryable
RetryTemplate および Reactor の再試行サポートに合わせて、命令型のターゲットメソッドを再度呼び出すか、それに応じてリアクティブ結果を装飾します。
Spring Retry プロジェクトに触発されましたが、Spring Framework の最小限のコア再試行機能として再設計されました。
- 導入:
- 7.0
- 作成者:
- Juergen Hoeller, Sam Brannen
- 関連事項:
オプション要素の概要
オプション要素修飾子と型オプションの要素説明long最初の呼び出し後の基本遅延。最初の呼び出し後の基本遅延 (期間文字列)。ClassSE<? extends ThrowableSE>[]再試行を回避するために適用されない例外型。ClassSE<? extends ThrowableSE>[]再試行を試みる適用可能な例外型。long基本再試行のジッター値。計算された遅延に対してランダムに減算または加算され、結果はdelay - jitterとdelay + jitterの間の値になりますが、基本delay()を下回ったり、maxDelay()を上回ることはありません。基本再試行のジッター値 (期間文字列)。long再試行の最大遅延を期間文字列で指定します。long再試行の最大回数。設定可能な文字列として、再試行の最大回数を指定します。double次回の再試行までの遅延の乗数 (構成可能な文字列)。ClassSE<? extends MethodRetryPredicate> 呼び出しを再試行できる適用可能な例外をフィルタリングするための述語。ClassSE<? extends ThrowableSE>[]includes()の便利なデフォルト属性。通常、再試行する単一の例外型で使用されます。
要素の詳細
value
includes()の便利なデフォルト属性。通常、再試行する単一の例外型で使用されます。- デフォルト:
{}
includes
excludes
ClassSE<? extends ThrowableSE>[] excludes再試行を回避したい適用外の例外型。この属性を使用すると、割り当て可能な例外型を簡単に指定できます。指定された例外型は、失敗した呼び出しによってスローされた例外やネストされた原因と照合されます。
オプションで、
includesまたはカスタムpredicateと組み合わせることができます。デフォルトは空で、例外が発生した場合は再試行が行われます。
- 関連事項:
- デフォルト:
{}
predicate
ClassSE<? extends MethodRetryPredicate> predicate呼び出しを再試行できる適用可能な例外をフィルタリングするための述語。指定された
MethodRetryPredicate実装はメソッドごとにインスタンス化されます。他の Bean や機能へのアクセスが必要な場合は、コンストラクターレベルでの依存性注入、またはオートワイヤリングアノテーションを通じて依存性注入を使用できます。オプションで
includesまたはexcludesと組み合わせることができます。デフォルトでは、すべての例外に対して再試行が行われます。
- 関連事項:
- デフォルト:
org.springframework.resilience.retry.MethodRetryPredicate.class
maxRetries
long maxRetries再試行の最大回数。total attempts = 1 initial attempt + maxRetries attemptsに注意してください。maxRetriesが 4 に設定されている場合、アノテーション付きメソッドは少なくとも 1 回、最大 5 回呼び出されます。デフォルトは 3 です。
- デフォルト:
3L
maxRetriesString
StringSE maxRetriesString設定可能な文字列として、再試行の最大回数を指定します。ここで指定された空でない値は、
maxRetries()属性を上書きします。これは、Spring スタイルの "${...}" プレースホルダーと SpEL 式をサポートします。
- 関連事項:
- デフォルト:
""
delay
long delay最初の呼び出し後の基本遅延。乗数が指定されている場合は、これが乗算される初期遅延として機能します。時間の単位はデフォルトでミリ秒ですが、
timeUnit()を介してオーバーライドできます。0 以上である必要があります。デフォルトは 1000 です。
- 関連事項:
- デフォルト:
1000L
delayString
StringSE delayString最初の呼び出し後の基本遅延 (期間文字列)。ここで指定された空でない値は、
delay()属性を上書きします。期間文字列にはいくつかの形式があります:
- 単純な整数 -
timeUnit()で上書きされない限り、デフォルトではミリ秒単位の期間を表すと解釈されます。(その場合はdelay()を使用することをお勧めします) - 既知の
DurationFormat.Styleのいずれか:ISO8601スタイルまたはSIMPLEスタイル - 文字列に明示的な単位が含まれていない場合は、timeUnit()をフォールバックとして使用します - 上記のいずれか、Spring スタイルの "${...}" プレースホルダーと SpEL 式を使用
- 戻り値:
- 初期遅延を文字列値として指定します。たとえば、プレースホルダ、
java.time.Duration準拠の値、simple format準拠の値などです。 - 関連事項:
- デフォルト:
""
- 単純な整数 -
jitter
long jitterベースとなる再試行のジッター値。計算された遅延値からランダムに減算または加算され、結果はdelay - jitterとdelay + jitterの間となりますが、ベースとなるdelay()を下回ったり、maxDelay()を上回ったりすることはありません。乗数が指定されている場合は、ジッター値にも適用されます。時間の単位はデフォルトでミリ秒ですが、
timeUnit()を介してオーバーライドできます。デフォルトは 0 (ジッターなし) です。
- 関連事項:
- デフォルト:
0L
jitterString
StringSE jitterString基本再試行のジッター値 (期間文字列)。ここで指定された空でない値は、
jitter()属性を上書きします。期間文字列にはいくつかの形式があります:
- 単純な整数 -
timeUnit()で上書きされない限り、デフォルトではミリ秒単位の期間を表すと解釈されます。(その場合はjitter()を使用することをお勧めします) - 既知の
DurationFormat.Styleのいずれか:ISO8601スタイルまたはSIMPLEスタイル - 文字列に明示的な単位が含まれていない場合は、timeUnit()をフォールバックとして使用します - 上記のいずれか、Spring スタイルの "${...}" プレースホルダーと SpEL 式を使用
- 戻り値:
- 初期遅延を文字列値として指定します。たとえば、プレースホルダ、
java.time.Duration準拠の値、simple format準拠の値などです。 - 関連事項:
- デフォルト:
""
- 単純な整数 -
multiplier
multiplierString
StringSE multiplierString次回の再試行までの遅延の乗数 (構成可能な文字列)。ここで指定された空でない値は、
multiplier()属性を上書きします。これは、Spring スタイルの "${...}" プレースホルダーと SpEL 式をサポートします。
- 関連事項:
- デフォルト:
""
maxDelay
long maxDelay再試行の最大遅延。jitter()とmultiplier()が遅延をどれだけ増加できるかを制限します。時間の単位はデフォルトでミリ秒ですが、
timeUnit()を介してオーバーライドできます。デフォルトは無制限です。
- 関連事項:
- デフォルト:
9223372036854775807L
maxDelayString
StringSE maxDelayString再試行の最大遅延を期間文字列で指定します。ここで指定された空でない値は、
maxDelay()属性を上書きします。期間文字列にはいくつかの形式があります:
- 単純な整数 -
timeUnit()で上書きされない限り、デフォルトではミリ秒単位の期間を表すと解釈されます。(その場合はmaxDelay()を使用することをお勧めします) - 既知の
DurationFormat.Styleのいずれか:ISO8601スタイルまたはSIMPLEスタイル - 文字列に明示的な単位が含まれていない場合は、timeUnit()をフォールバックとして使用します - 上記のいずれか、Spring スタイルの "${...}" プレースホルダーと SpEL 式を使用
- 戻り値:
- 初期遅延を文字列値として指定します。たとえば、プレースホルダ、
java.time.Duration準拠の値、simple format準拠の値などです。 - 関連事項:
- デフォルト:
""
- 単純な整数 -
timeUnit
TimeUnitSE timeUnitdelay()、delayString()、jitter()、jitterString()、maxDelay()、maxDelayString()に使用するTimeUnitSE。デフォルトは
TimeUnit.MILLISECONDSSE です。この属性は、
delayString()、jitterString()、またはmaxDelayString()を介して提供されるDurationSE 値では無視されます。- 戻り値:
- 使用する
TimeUnit
- デフォルト:
MILLISECONDS