クラス RetryTemplateBuilder
RetryTemplate の新しいインスタンスを構成するための流れるような API を提供するビルダー。 デフォルトでは、ビルダーは、原因を走査せずに ExceptionSE とそのサブクラスに作用する BinaryExceptionClassifier、アクションを MaxAttemptsRetryPolicy.DEFAULT_MAX_ATTEMPTS 回試行する NoBackOffPolicy および MaxAttemptsRetryPolicy を構成します。
ビルダーはスレッドセーフではありません。
使用例:
RetryTemplate.builder()
.maxAttempts(10)
.exponentialBackoff(100, 2, 10000)
.retryOn(IOException.class)
.traversingCauses()
.build();
RetryTemplate.builder()
.fixedBackoff(10)
.withinMillis(3000)
.build();
RetryTemplate.builder()
.infiniteRetry()
.retryOn(IOException.class)
.uniformRandomBackoff(1000, 3000)
.build();
- 導入:
- 1.3
- 作成者:
- Aleksandr Shamukov, Artem Bilan, Kim In Hoi, Andreas Ahlenstorf, Morulai Planinski, Tobias Soloschenko
コンストラクター概要
コンストラクター方法の概要
修飾子と型メソッド説明build()新しいRetryTemplateをビルドします。customBackoff(BackOffPolicy backOffPolicy) 付属のBackOffPolicyを使用してください。customPolicy(RetryPolicy policy) 付属のRetryPolicyを使用してください。exponentialBackoff(long initialInterval, double multiplier, long maxInterval) 指数バックオフポリシーを使用します。exponentialBackoff(long initialInterval, double multiplier, long maxInterval, boolean withRandom) 指数バックオフポリシーを使用します。exponentialBackoff(DurationSE initialInterval, double multiplier, DurationSE maxInterval) 指数バックオフポリシーを使用します。exponentialBackoff(DurationSE initialInterval, double multiplier, DurationSE maxInterval, boolean withRandom) 指数バックオフポリシーを使用します。fixedBackoff(long interval) 一定時間後に再試行を実行します。fixedBackoff(DurationSE interval) 一定時間後に再試行を実行します。アクションを無限に再試行します。maxAttempts(int maxAttempts) アクションをmaxAttempts回以内で試行します。試行の間に一時停止せずに、すぐに再試行してください。notRetryOn(ClassSE<? extends ThrowableSE> throwable) 再試行を引き起こさない例外のリストにThrowableSE とそのサブクラスを追加します。notRetryOn(ListSE<ClassSE<? extends ThrowableSE>> throwables) 再試行を引き起こさない例外のリストに、ThrowableSE クラスとそのサブクラスのリストを追加します。retryOn(ClassSE<? extends ThrowableSE> throwable) 再試行を引き起こす例外のリストにThrowableSE とそのサブクラスを追加します。retryOn(PredicateSE<ThrowableSE> predicate) 例外によって再試行が発生するかどうかを決定するPredicateSE<ThrowableSE>を設定します。retryOn(ListSE<ClassSE<? extends ThrowableSE>> throwables) 再試行の原因となる例外のリストに、ThrowableSE クラスとそのサブクラスのリストを追加します。再試行を引き起こすThrowableSE インスタンスの例外原因の調査を有効にします。uniformRandomBackoff(long minInterval, long maxInterval) UniformRandomBackOffPolicyを使用します。uniformRandomBackoff(DurationSE minInterval, DurationSE maxInterval) UniformRandomBackOffPolicyを使用します。withinMillis(long timeout) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。withListener(RetryListener listener) 提供されたlistenerをRetryTemplateのリスナーリストに追加します。withListeners(ListSE<RetryListener> listeners) 提供されたすべてのlistenersをRetryTemplateのリスナーリストに追加します。withLogger(org.apache.commons.logging.Log logger) RetryTemplateに専用ロガーを適用します。withTimeout(long timeoutMillis) 最初の試行からtimeoutMillisが経過するまで再試行します。withTimeout(DurationSE timeout) 最初の試行からtimeoutが経過するまで再試行します。
コンストラクターの詳細
RetryTemplateBuilder
public RetryTemplateBuilder()
方法の詳細
maxAttempts
アクションをmaxAttempts回以内で試行します。- パラメーター:
maxAttempts- アクションを試行する回数。値が 3 の場合、最初の試行と 2 回の再試行が行われます。- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE-maxAttemptsが 0 以下の場合、または別の再試行ポリシーがすでに選択されている場合。- 関連事項:
withinMillis
@DeprecatedSE(since="2.0.2", forRemoval=true) public RetryTemplateBuilder withinMillis(long timeout) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。代わりにwithTimeout(long)を使用してください。最初の試行からtimeoutが経過するまで再試行します。- パラメーター:
timeout- タイムアウト(ミリ秒)- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE- タイムアウトが 0 以下であるか、別の再試行ポリシーがすでに選択されている場合。- 関連事項:
withTimeout
最初の試行からtimeoutMillisが経過するまで再試行します。- パラメーター:
timeoutMillis- タイムアウト(ミリ秒)- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE- タイムアウトが 0 以下であるか、別の再試行ポリシーがすでに選択されている場合。- 導入:
- 2.0.2
- 関連事項:
withTimeout
最初の試行からtimeoutが経過するまで再試行します。- パラメーター:
timeout- 再試行をどのくらいの期間行うかを示す期間- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE- タイムアウトがnullまたは 0 の場合、または別の再試行ポリシーがすでに選択されている場合。- 導入:
- 2.0.2
- 関連事項:
infiniteRetry
アクションを無限に再試行します。- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE- 別の再試行ポリシーがすでに選択されている場合。- 関連事項:
customPolicy
付属のRetryPolicyを使用してください。- パラメーター:
policy- 使用するRetryPolicy- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE- 別のバックオフポリシーがすでに選択されている場合、いずれかの引数がnullである場合、または別の再試行ポリシーがすでに選択されている場合。
exponentialBackoff
public RetryTemplateBuilder exponentialBackoff(long initialInterval, double multiplier, long maxInterval) 指数バックオフポリシーを使用します。バックオフ期間の計算式は次のとおりです。currentInterval = Math.min(initialInterval * Math.pow(multiplier, retryNum), maxInterval)最初の試みは、
retryNum = 0です。- パラメーター:
initialInterval- 初期スリープ期間(ミリ秒)multiplier- バックオフ間隔乗数maxInterval- ミリ秒単位の最大バックオフ期間- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE- 別のバックオフポリシーがすでに選択されている場合、initialInterval< 1 の場合、multiplier<= 1 の場合、またはmaxInterval<=initialIntervalの場合。- 関連事項:
exponentialBackoff
public RetryTemplateBuilder exponentialBackoff(DurationSE initialInterval, double multiplier, DurationSE maxInterval) 指数バックオフポリシーを使用します。バックオフ期間の計算式は次のとおりです。currentInterval = Math.min(initialInterval * Math.pow(multiplier, retryNum), maxInterval)最初の試みは、
retryNum = 0です。- パラメーター:
initialInterval- 初期睡眠時間multiplier- バックオフ間隔乗数maxInterval- 最大バックオフ期間- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE- 別のバックオフポリシーがすでに選択されている場合、initialIntervalがnullであるか 1 ミリ秒未満である場合、乗数が <= 1 である場合、またはmaxIntervalがnullであるか <=initialIntervalである場合。- 導入:
- 2.0.2
- 関連事項:
exponentialBackoff
public RetryTemplateBuilder exponentialBackoff(long initialInterval, double multiplier, long maxInterval, boolean withRandom) 指数バックオフポリシーを使用します。バックオフ期間の式は次のとおりです (ランダム性なし):currentInterval = Math.min(initialInterval * Math.pow(multiplier, retryNum), maxInterval)最初の試みは、
retryNum = 0です。- パラメーター:
initialInterval- 初期スリープ期間(ミリ秒)multiplier- バックオフ間隔乗数maxInterval- ミリ秒単位の最大バックオフ期間withRandom-ExponentialRandomBackOffPolicyを使用するかどうか(trueの場合)- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE- 別のバックオフポリシーがすでに選択されている場合、initialInterval< 1 の場合、multiplier<= 1 の場合、またはmaxInterval<=initialIntervalの場合。- 関連事項:
exponentialBackoff
public RetryTemplateBuilder exponentialBackoff(DurationSE initialInterval, double multiplier, DurationSE maxInterval, boolean withRandom) 指数バックオフポリシーを使用します。バックオフ期間の式は次のとおりです (ランダム性なし):currentInterval = Math.min(initialInterval * Math.pow(multiplier, retryNum), maxInterval)最初の試みは、
retryNum = 0です。- パラメーター:
initialInterval- 初期睡眠時間multiplier- バックオフ間隔乗数maxInterval- 最大バックオフ期間withRandom-ExponentialRandomBackOffPolicyを使用するかどうか(trueの場合)- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE- 別のバックオフポリシーがすでに選択されている場合、initialIntervalがnullまたは 1 ミリ秒未満の場合、multiplierが <= 1 の場合、またはmaxIntervalがnullまたは <=initialIntervalの場合。- 導入:
- 2.0.2
- 関連事項:
withLogger
RetryTemplateに専用のロガーを適用します。適用されていない場合は、以下が使用されます。LogFactory.getLog(getClass())- パラメーター:
logger- ログ記録に使用するロガー- 戻り値:
- this
- 導入:
- 2.0.10
fixedBackoff
一定時間後に再試行を実行します。- パラメーター:
interval- ミリ秒単位の固定間隔- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE- 別のバックオフポリシーがすでに選択されている場合、またはintervalが 1 未満の場合。- 関連事項:
fixedBackoff
一定時間後に再試行を実行します。- パラメーター:
interval- 固定バックオフ期間- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE- 別のバックオフポリシーがすでに選択されている場合、またはintervalがnullまたは 1 ミリ秒未満の場合- 導入:
- 2.0.2
- 関連事項:
uniformRandomBackoff
UniformRandomBackOffPolicyを使用します。- パラメーター:
minInterval- 最小間隔(ミリ秒)maxInterval- 最大間隔(ミリ秒)- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE- 別のバックオフポリシーがすでに選択されている場合、minIntervalが < 1 の場合、maxIntervalが < 1 の場合、またはmaxIntervalが <=minIntervalの場合。- 関連事項:
uniformRandomBackoff
UniformRandomBackOffPolicyを使用します。- パラメーター:
minInterval- 最小バックオフ期間maxInterval- 最大バックオフ期間- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE- 別のバックオフポリシーがすでに選択されている場合、minIntervalがnullまたは < 1 の場合、maxIntervalがnullまたは 1 ミリ秒未満の場合、またはmaxInterval<=minIntervalの場合。- 導入:
- 2.0.2
- 関連事項:
noBackoff
試行の間に一時停止せずに、すぐに再試行してください。- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE- 別のバックオフポリシーがすでに選択されている場合。- 関連事項:
customBackoff
付属のBackOffPolicyを使用してください。- パラメーター:
backOffPolicy- 使用するBackOffPolicy- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE-backOffPolicyが null の場合、または別のバックオフポリシーがすでに選択されている場合。
retryOn
再試行を引き起こす例外のリストにThrowableSE とそのサブクラスを追加します。retryOn()とnotRetryOn()は相互に排他的です。両方を使用しようとすると、IllegalArgumentExceptionSE が発生します。- パラメーター:
throwable- 再試行を引き起こす- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE-throwableがnullの場合、またはnotRetryOn(java.lang.Class<? extends java.lang.Throwable>)がすでに使用されている場合。- 関連事項:
notRetryOn
再試行を引き起こさない例外のリストにThrowableSE とそのサブクラスを追加します。retryOn()とnotRetryOn()は相互に排他的です。両方を使用しようとすると、IllegalArgumentExceptionSE が発生します。- パラメーター:
throwable- 再試行を起こさない- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE-throwableがnullの場合、またはretryOn(java.lang.Class<? extends java.lang.Throwable>)がすでに使用されている場合。- 関連事項:
retryOn
再試行の原因となる例外のリストに、ThrowableSE クラスとそのサブクラスのリストを追加します。retryOn()とnotRetryOn()は相互に排他的です。両方を使用しようとすると、IllegalArgumentExceptionSE が発生します。- パラメーター:
throwables- 再試行を引き起こす- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE-notRetryOn(java.lang.Class<? extends java.lang.Throwable>)がすでに使用されている場合。- 導入:
- 1.3.2
- 関連事項:
notRetryOn
再試行を引き起こさない例外のリストに、ThrowableSE クラスとそのサブクラスのリストを追加します。retryOn()とnotRetryOn()は相互に排他的です。両方を使用しようとすると、IllegalArgumentExceptionSE が発生します。- パラメーター:
throwables- 再試行を起こさない- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE-retryOn(java.lang.Class<? extends java.lang.Throwable>)がすでに使用されている場合。- 導入:
- 1.3.2
- 関連事項:
retryOn
例外によって再試行が発生するかどうかを決定するPredicateSE<ThrowableSE>を設定します。retryOn(Predicate<Throwable>)は、他のretryOn()またはnoRetryOn()と混合することはできません。混合しようとすると、IllegalArgumentExceptionSE になります。- パラメーター:
predicate- 例外によって再試行が発生する場合。- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE-retryOn(java.lang.Class<? extends java.lang.Throwable>)またはnotRetryOn(java.lang.Class<? extends java.lang.Throwable>)がすでに使用されている場合。- 導入:
- 2.0.7
- 関連事項:
traversingCauses
再試行を引き起こすThrowableSE インスタンスの例外原因の調査を有効にします。次の
RetryTemplateを想定します。RetryTemplate.builder() .retryOn(IOException.class) .build()これは、
IOExceptionSE をスローするコード (例:throw new IOException()) に対して動作します。ただし、IOExceptionSE が別の例外 (例:throw new MyException(new IOException())) にラップされている場合は、アクションを再試行しません。ただし、このRetryTemplateは次のようになります。RetryTemplate.builder() .retryOn(IOException.class) .traversingCauses() .build()- 戻り値:
- this
- 関連事項:
withListener
提供されたlistenerをRetryTemplateのリスナーリストに追加します。- パラメーター:
listener- 追加される- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE-listenerがnullの場合。- 関連事項:
withListeners
提供されたすべてのlistenersをRetryTemplateのリスナーリストに追加します。- パラメーター:
listeners- 追加される- 戻り値:
- this
- 例外:
IllegalArgumentExceptionSE-listenersのいずれかがnullである場合。- 関連事項:
build
新しいRetryTemplateをビルドします。複数のインスタンスの構築をサポートします。ただし、複数の
build()呼び出し間で構成を変更することはできません。返される
RetryTemplateのretryPolicyは常に、1 つの基本ポリシーと、基本ポリシーに関係なく例外分類を可能にするBinaryExceptionClassifierRetryPolicyで構成されるCompositeRetryPolicyです。- 戻り値:
RetryTemplateの新しいインスタンス
withTimeout(long)を使用してください。