Class 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
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and TypeMethodDescription
      booleancanRetry​(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) 
      voidregisterListener​(org.springframework.retry.RetryListener listener) 
      voidsetBackOffPolicy​(org.springframework.retry.backoff.BackOffPolicy backOffPolicy) 
      voidsetListeners​(org.springframework.retry.RetryListener[] listeners) 
      voidsetRetryContextCache​(org.springframework.retry.policy.RetryContextCache retryContextCache) 
      voidsetRetryPolicy​(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)