org.springframework.batch.core.step.item

## Class BatchRetryTemplate

- java.lang.Object
- - org.springframework.batch.core.step.item.BatchRetryTemplate

- All Implemented Interfaces:
    org.springframework.retry.RetryOperations

      public class BatchRetryTemplate
      extends java.lang.Object
      implements org.springframework.retry.RetryOperations

  A special purpose retry template that deals specifically with multi-valued stateful retry. This is useful in the case where the operation to be retried operates on multiple items, and when it fails there is no way to decide which (if any) of the items was responsible. The `RetryState` used in the execute methods is composite, and when a failure occurs, all of the keys in the composite are "tarred with the same brush". Subsequent attempts to execute with any of the keys that have failed previously results in a new attempt and the previous state is used to check the `RetryPolicy`. If one of the failed items eventually succeeds then the others in the current composite for that attempt will be cleared from the context cache (as normal), but there may still be entries in the cache for the original failed items. This might mean that an item that did not cause a failure is never retried because other items in the same batch fail fatally first.
  Author:
    Dave Syer

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `BatchRetryTemplate()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `canRetry(org.springframework.retry.RetryContext context)`
    `static java.util.List<org.springframework.retry.RetryState>` | `createState(java.util.List<?> keys)`
    `static java.util.List<org.springframework.retry.RetryState>` | `createState(java.util.List<?> keys, org.springframework.classify.Classifier<? super java.lang.Throwable,java.lang.Boolean> classifier)`
    `<T,E extends java.lang.Throwable> T` | `execute(org.springframework.retry.RetryCallback<T,E> retryCallback)`
    `<T,E extends java.lang.Throwable> T` | `execute(org.springframework.retry.RetryCallback<T,E> retryCallback, java.util.Collection<org.springframework.retry.RetryState> states)`
    `<T,E extends java.lang.Throwable> T` | `execute(org.springframework.retry.RetryCallback<T,E> retryCallback, org.springframework.retry.RecoveryCallback<T> recoveryCallback)`
    `<T,E extends java.lang.Throwable> T` | `execute(org.springframework.retry.RetryCallback<T,E> retryCallback, org.springframework.retry.RecoveryCallback<T> recoveryCallback, java.util.Collection<org.springframework.retry.RetryState> states)`
    `<T,E extends java.lang.Throwable> T` | `execute(org.springframework.retry.RetryCallback<T,E> retryCallback, org.springframework.retry.RecoveryCallback<T> recoveryCallback, org.springframework.retry.RetryState retryState)`
    `<T,E extends java.lang.Throwable> T` | `execute(org.springframework.retry.RetryCallback<T,E> retryCallback, org.springframework.retry.RetryState retryState)`
    `void` | `registerListener(org.springframework.retry.RetryListener listener)`
    `void` | `setBackOffPolicy(org.springframework.retry.backoff.BackOffPolicy backOffPolicy)`
    `void` | `setListeners(org.springframework.retry.RetryListener[] listeners)`
    `void` | `setRetryContextCache(org.springframework.retry.policy.RetryContextCache retryContextCache)`
    `void` | `setRetryPolicy(org.springframework.retry.RetryPolicy retryPolicy)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### BatchRetryTemplate

          public BatchRetryTemplate()

  - ### Method Detail

    - #### execute

          public <T,E extends java.lang.Throwable> T execute(org.springframework.retry.RetryCallback<T,E> retryCallback,
                                                             java.util.Collection<org.springframework.retry.RetryState> states)
                                                      throws E extends java.lang.Throwable,
                                                             java.lang.Exception

      Throws:
        `E extends java.lang.Throwable`
        `java.lang.Exception`

    - #### execute

          public <T,E extends java.lang.Throwable> T execute(org.springframework.retry.RetryCallback<T,E> retryCallback,
                                                             org.springframework.retry.RecoveryCallback<T> recoveryCallback,
                                                             java.util.Collection<org.springframework.retry.RetryState> states)
                                                      throws E extends java.lang.Throwable,
                                                             java.lang.Exception

      Throws:
        `E extends java.lang.Throwable`
        `java.lang.Exception`

    - #### execute

          public final <T,E extends java.lang.Throwable> T execute(org.springframework.retry.RetryCallback<T,E> retryCallback,
                                                                   org.springframework.retry.RecoveryCallback<T> recoveryCallback,
                                                                   org.springframework.retry.RetryState retryState)
                                                            throws E extends java.lang.Throwable

      Specified by:
        `execute` in interface `org.springframework.retry.RetryOperations`
      Throws:
        `E extends java.lang.Throwable`

    - #### execute

          public final <T,E extends java.lang.Throwable> T execute(org.springframework.retry.RetryCallback<T,E> retryCallback,
                                                                   org.springframework.retry.RecoveryCallback<T> recoveryCallback)
                                                            throws E extends java.lang.Throwable

      Specified by:
        `execute` in interface `org.springframework.retry.RetryOperations`
      Throws:
        `E extends java.lang.Throwable`

    - #### execute

          public final <T,E extends java.lang.Throwable> T execute(org.springframework.retry.RetryCallback<T,E> retryCallback,
                                                                   org.springframework.retry.RetryState retryState)
                                                            throws E extends java.lang.Throwable,
                                                                   org.springframework.retry.ExhaustedRetryException

      Specified by:
        `execute` in interface `org.springframework.retry.RetryOperations`
      Throws:
        `E extends java.lang.Throwable`
        `org.springframework.retry.ExhaustedRetryException`

    - #### execute

          public final <T,E extends java.lang.Throwable> T execute(org.springframework.retry.RetryCallback<T,E> retryCallback)
                                                            throws E extends java.lang.Throwable

      Specified by:
        `execute` in interface `org.springframework.retry.RetryOperations`
      Throws:
        `E extends java.lang.Throwable`

    - #### createState

          public static java.util.List<org.springframework.retry.RetryState> createState(java.util.List<?> keys)

    - #### createState

          public static java.util.List<org.springframework.retry.RetryState> createState(java.util.List<?> keys,
                                                                                         org.springframework.classify.Classifier<? super java.lang.Throwable,java.lang.Boolean> classifier)

    - #### registerListener

          public void registerListener(org.springframework.retry.RetryListener listener)

    - #### setBackOffPolicy

          public void setBackOffPolicy(org.springframework.retry.backoff.BackOffPolicy backOffPolicy)

    - #### setListeners

          public void setListeners(org.springframework.retry.RetryListener[] listeners)

    - #### setRetryContextCache

          public void setRetryContextCache(org.springframework.retry.policy.RetryContextCache retryContextCache)

    - #### setRetryPolicy

          public void setRetryPolicy(org.springframework.retry.RetryPolicy retryPolicy)

    - #### canRetry

          public boolean canRetry(org.springframework.retry.RetryContext context)