类 ExponentialBackOff

java.lang.Object
cn.taketoday.util.backoff.ExponentialBackOff
所有已实现的接口:
BackOff

public class ExponentialBackOff extends 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, and the default maximum number of attempts is Integer.MAX_VALUE. Use setMaxElapsedTime(long) to limit the length of time that an instance should accumulate before returning BackOffExecution.STOP. Alternatively, use setMaxAttempts(int) to limit the number of attempts. The execution stops when either of those two limits is reached.

从以下版本开始:
4.0
作者:
Stephane Nicoll, Gary Russell, Harry Yang
  • 字段详细资料

    • DEFAULT_INITIAL_INTERVAL

      public static final long DEFAULT_INITIAL_INTERVAL
      The default initial interval.
      另请参阅:
    • DEFAULT_MULTIPLIER

      public static final double DEFAULT_MULTIPLIER
      The default multiplier (increases the interval by 50%).
      另请参阅:
    • DEFAULT_MAX_INTERVAL

      public static final long DEFAULT_MAX_INTERVAL
      The default maximum back off time.
      另请参阅:
    • DEFAULT_MAX_ELAPSED_TIME

      public static final long DEFAULT_MAX_ELAPSED_TIME
      The default maximum elapsed time.
      另请参阅:
    • DEFAULT_MAX_ATTEMPTS

      public static final int DEFAULT_MAX_ATTEMPTS
      The default maximum attempts.
      另请参阅:
    • initialInterval

      private long initialInterval
    • multiplier

      private double multiplier
    • maxInterval

      private long maxInterval
    • maxElapsedTime

      private long maxElapsedTime
    • maxAttempts

      private int maxAttempts
  • 构造器详细资料

  • 方法详细资料

    • 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.
    • setMaxElapsedTime

      public void setMaxElapsedTime(long maxElapsedTime)
      The maximum elapsed time in milliseconds after which a call to BackOffExecution.nextBackOff() returns BackOffExecution.STOP.
      参数:
      maxElapsedTime - the maximum elapsed time
      另请参阅:
    • getMaxElapsedTime

      public long getMaxElapsedTime()
      Return the maximum elapsed time in milliseconds after which a call to BackOffExecution.nextBackOff() returns BackOffExecution.STOP.
      返回:
      the maximum elapsed time
      另请参阅:
    • setMaxAttempts

      public void setMaxAttempts(int maxAttempts)
      The maximum number of attempts after which a call to BackOffExecution.nextBackOff() returns BackOffExecution.STOP.
      参数:
      maxAttempts - the maximum number of attempts
      另请参阅:
    • getMaxAttempts

      public int getMaxAttempts()
      Return the maximum number of attempts after which a call to BackOffExecution.nextBackOff() returns BackOffExecution.STOP.
      返回:
      the maximum number of attempts
      另请参阅:
    • start

      public BackOffExecution start()
      从接口复制的说明: BackOff
      Start a new back off execution.
      指定者:
      start 在接口中 BackOff
      返回:
      a fresh BackOffExecution ready to be used
    • checkMultiplier

      private void checkMultiplier(double multiplier)