Class ExponentialBackOffSchedulingStrategy

  • All Implemented Interfaces:
    SchedulingStrategy

    @Contract(threading=STATELESS)
    public class ExponentialBackOffSchedulingStrategy
    extends java.lang.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 Detail

      • 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 Detail

      • 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 Detail

      • 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)