Class ExponentialBackOffSchedulingStrategy

java.lang.Object
org.apache.hc.client5.http.impl.schedule.ExponentialBackOffSchedulingStrategy
All Implemented Interfaces:
SchedulingStrategy

@Contract(threading=STATELESS) public class ExponentialBackOffSchedulingStrategy extends Object implements SchedulingStrategy
An implementation that backs off exponentially based on the number of consecutive failed attempts. It uses the following defaults:
     no delay in case it was never tried or didn't fail so far
    6 s delay for one failed attempt (= getInitialExpiry())
   60 s delay for two failed attempts
 10 min delay for three failed attempts
100 min delay for four failed attempts
  ~16 h delay for five failed attempts
   24 h delay for six or more failed attempts (= getMaxExpiry())
The following equation is used to calculate the delay for a specific pending operation:
    delay = getInitialExpiry() * Math.pow(getBackOffRate(),
    consecutiveFailedAttempts - 1))
The resulting delay won't exceed getMaxExpiry().
Since:
5.0
  • Field Details

    • DEFAULT_BACK_OFF_RATE

      public static final long DEFAULT_BACK_OFF_RATE
      See Also:
    • DEFAULT_INITIAL_EXPIRY

      public static final org.apache.hc.core5.util.TimeValue DEFAULT_INITIAL_EXPIRY
    • DEFAULT_MAX_EXPIRY

      public static final org.apache.hc.core5.util.TimeValue DEFAULT_MAX_EXPIRY
    • backOffRate

      private final long backOffRate
    • initialExpiry

      private final org.apache.hc.core5.util.TimeValue initialExpiry
    • maxExpiry

      private final org.apache.hc.core5.util.TimeValue maxExpiry
  • Constructor Details

    • ExponentialBackOffSchedulingStrategy

      public ExponentialBackOffSchedulingStrategy(long backOffRate, org.apache.hc.core5.util.TimeValue initialExpiry, org.apache.hc.core5.util.TimeValue maxExpiry)
    • ExponentialBackOffSchedulingStrategy

      public ExponentialBackOffSchedulingStrategy(long backOffRate, org.apache.hc.core5.util.TimeValue initialExpiry)
    • ExponentialBackOffSchedulingStrategy

      public ExponentialBackOffSchedulingStrategy(long backOffRate)
    • ExponentialBackOffSchedulingStrategy

      public ExponentialBackOffSchedulingStrategy()
  • Method Details

    • schedule

      public org.apache.hc.core5.util.TimeValue schedule(int attemptNumber)
      Description copied from interface: SchedulingStrategy
      Schedules execution time for an operation.
      Specified by:
      schedule in interface SchedulingStrategy
    • getBackOffRate

      public long getBackOffRate()
    • getInitialExpiry

      public org.apache.hc.core5.util.TimeValue getInitialExpiry()
    • getMaxExpiry

      public org.apache.hc.core5.util.TimeValue getMaxExpiry()
    • calculateDelay

      protected org.apache.hc.core5.util.TimeValue calculateDelay(int consecutiveFailedAttempts)