org.apache.hc.client5.http.impl.schedule

## 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 Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static long` | `DEFAULT_BACK_OFF_RATE`
    `static TimeValue` | `DEFAULT_INITIAL_EXPIRY`
    `static TimeValue` | `DEFAULT_MAX_EXPIRY`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ExponentialBackOffSchedulingStrategy()`
    `ExponentialBackOffSchedulingStrategy(long backOffRate)`
    `ExponentialBackOffSchedulingStrategy(long backOffRate, TimeValue initialExpiry)`
    `ExponentialBackOffSchedulingStrategy(long backOffRate, TimeValue initialExpiry, TimeValue maxExpiry)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected TimeValue` | `calculateDelay(int consecutiveFailedAttempts)`
    `long` | `getBackOffRate()`
    `TimeValue` | `getInitialExpiry()`
    `TimeValue` | `getMaxExpiry()`
    `TimeValue` | `schedule(int attemptNumber)` Schedules execution time for an operation.

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

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

- - ### Field Detail

    - #### DEFAULT_BACK_OFF_RATE

          public static final long DEFAULT_BACK_OFF_RATE

      See Also:
        Constant Field Values

    - #### DEFAULT_INITIAL_EXPIRY

          public static final TimeValue DEFAULT_INITIAL_EXPIRY

    - #### DEFAULT_MAX_EXPIRY

          public static final TimeValue DEFAULT_MAX_EXPIRY

  - ### Constructor Detail

    - #### ExponentialBackOffSchedulingStrategy

          public ExponentialBackOffSchedulingStrategy(long backOffRate,
                                                      TimeValue initialExpiry,
                                                      TimeValue maxExpiry)

    - #### ExponentialBackOffSchedulingStrategy

          public ExponentialBackOffSchedulingStrategy(long backOffRate,
                                                      TimeValue initialExpiry)

    - #### ExponentialBackOffSchedulingStrategy

          public ExponentialBackOffSchedulingStrategy(long backOffRate)

    - #### ExponentialBackOffSchedulingStrategy

          public ExponentialBackOffSchedulingStrategy()

  - ### Method Detail

    - #### schedule

          public 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 TimeValue getInitialExpiry()

    - #### getMaxExpiry

          public TimeValue getMaxExpiry()

    - #### calculateDelay

          protected TimeValue calculateDelay(int consecutiveFailedAttempts)

Copyright © 1999–2021 The Apache Software Foundation. All rights reserved.