Иногда из-за кратковременного сбоя, в результате отказа выполнения Batch, таких как сети джиттера и т.д., для того, чтобы Batch робастности, на этот раз о необходимости повторить несколько раз, чтобы исключить статус Batch, как временные факторы вызвали сбой.
Следует отметить, что из более поздних версий 2.2.0 Spring Batch, Retry, были независимо друг от друга в одном Jar.
Настройки пакетного повтора:
повторная попытка ()
источник следующим образом :
public FaultTolerantStepBuilder<I, O> retry(Class<? extends Throwable> type) {
retryableExceptionClasses.put(type, true);
return this;
}
Определение должно быть повторено захвачено исключением, можно назвать несколько раз, каждый вызов будет исключением из списка внутри.
() NORETRY
источник следующим образом :
public FaultTolerantStepBuilder<I, O> noRetry(Class<? extends Throwable> type) {
retryableExceptionClasses.put(type, false);
return this;
}
Каждый вызов нужно будет исключить параметры, добавленные в список исключений внутри.
() RetryLimit
источник следующим образом :
public FaultTolerantStepBuilder<I, O> retryLimit(int retryLimit) {
this.retryLimit = retryLimit;
return this;
}
Максимальное число повторных попыток. Отказ будет напрямую говорить об этом числе.
() RetryContextCache
источник следующим образом :
public FaultTolerantStepBuilder<I, O> retryContextCache(RetryContextCache retryContextCache) {
this.retryContextCache = retryContextCache;
return this;
}
RetryContext используется для хранения кэша.
() RetryPolicy
источник следующим образом :
public FaultTolerantStepBuilder<I, O> retryPolicy(RetryPolicy retryPolicy) {
this.retryPolicy = retryPolicy;
return this;
}
Некоторые простые повторные попытки, повторные попытки могут быть достигнуты за счетом повторных попыток (), noRetry () и конфигурацией RetryLimit (). Spring Batch поддерживает повторные попытки реализовать сложную логику, установив RetryPolicy. Интерфейс (стратегия повторных попыток) RetryPolicy определяется следующим образом:
canRetry () Как определить, нужно ли повторять, открытую () выполняется, когда начало повторных попыток закрыть () выполняются в конце повторных попыток, каждый раз повторить попытку с именем registerThrowable () для инициализации контекста.
Система предоставляет несколько класса реализации по умолчанию:
Конкретные действия класса реализации, в следующей таблице:
класс реализации | эффект |
---|---|
NeverRetryPolicy | RetryCallback разрешается только звонить один раз, повторять попытки не допускается |
AlwaysRetryPolicy | Разрешить неограниченное число повторных попыток, пока это не удается, таким образом, логика неправильно может вызвать бесконечный цикл |
SimpleRetryPolicy | 固定次数重试策略,默认重试最大次数为3次,RetryTemplate默认使用的策略 |
TimeoutRetryPolicy | 超时时间重试策略,默认超时时间为1秒,在指定的超时时间内允许重试 |
CircuitBreakerRetryPolicy | 有熔断功能的重试策略,需设置3个参数openTimeout、resetTimeout和delegate, |
CompositeRetryPolicy | 组合重试策略,有两种组合方式,乐观组合重试策略是指只要有一个策略允许重试即可以,悲观组合重试策略是指只要有一个策略不允许重试即可以,但不管哪种组合方式,组合中的每一个策略都会执行 |
ExceptionClassifierRetryPolicy | 为不同的异常指定不同的重试策略 |