org.springframework.util.backoff

Class ExponentialBackOff

  • java.lang.Object
    • org.springframework.util.backoff.ExponentialBackOff
  • All Implemented Interfaces:
    BackOff


    public class ExponentialBackOff
    extends java.lang.Object
    implements BackOff
    Implementation of BackOff that increases the back off period for each retry attempt. When the interval has reached the max interval, it is no longer increased. Stops retrying once the max elapsed time has been reached.

    Example: The default interval is 2000L ms, the default multiplier is 1.5, and the default max interval is 30000L. For 10 attempts the sequence will be as follows:

     request#     back off
    
      1              2000
      2              3000
      3              4500
      4              6750
      5             10125
      6             15187
      7             22780
      8             30000
      9             30000
     10             30000
     

    Note that the default max elapsed time is Long.MAX_VALUE. Use setMaxElapsedTime(long) to limit the maximum length of time that an instance should accumulate before returning BackOffExecution.STOP.

    Since:
    4.1
    Author:
    Stephane Nicoll
    • Field Detail

      • DEFAULT_INITIAL_INTERVAL

        public static final long DEFAULT_INITIAL_INTERVAL
        The default initial interval.
        See Also:
        Constant Field Values
      • DEFAULT_MULTIPLIER

        public static final double DEFAULT_MULTIPLIER
        The default multiplier (increases the interval by 50%).
        See Also:
        Constant Field Values
      • DEFAULT_MAX_INTERVAL

        public static final long DEFAULT_MAX_INTERVAL
        The default maximum back off time.
        See Also:
        Constant Field Values
      • DEFAULT_MAX_ELAPSED_TIME

        public static final long DEFAULT_MAX_ELAPSED_TIME
        The default maximum elapsed time.
        See Also:
        Constant Field Values
    • Constructor Detail

      • ExponentialBackOff

        public ExponentialBackOff(long initialInterval,
                                  double multiplier)
        Create an instance with the supplied settings.
        Parameters:
        initialInterval - the initial interval in milliseconds
        multiplier - the multiplier (should be greater than or equal to 1)
    • Method Detail

      • setInitialInterval

        public void setInitialInterval(long initialInterval)
        The initial interval in milliseconds.
      • getInitialInterval

        public long getInitialInterval()
        Return the initial interval in milliseconds.
      • setMultiplier

        public void setMultiplier(double multiplier)
        The value to multiply the current interval by for each retry attempt.
      • getMultiplier

        public double getMultiplier()
        Return the value to multiply the current interval by for each retry attempt.
      • setMaxInterval

        public void setMaxInterval(long maxInterval)
        The maximum back off time.
      • getMaxInterval

        public long getMaxInterval()
        Return the maximum back off time.