Class ExponentialBackoffRetry

  • All Implemented Interfaces:
    RetryPolicy
    Direct Known Subclasses:
    BoundedExponentialBackoffRetry

    public class ExponentialBackoffRetry
    extends java.lang.Object
    Retry policy that retries a set number of times with increasing sleep time between retries
    • Constructor Detail

      • ExponentialBackoffRetry

        public ExponentialBackoffRetry​(int baseSleepTimeMs,
                                       int maxRetries)
        Parameters:
        baseSleepTimeMs - initial amount of time to wait between retries
        maxRetries - max number of times to retry
      • ExponentialBackoffRetry

        public ExponentialBackoffRetry​(int baseSleepTimeMs,
                                       int maxRetries,
                                       int maxSleepMs)
        Parameters:
        baseSleepTimeMs - initial amount of time to wait between retries
        maxRetries - max number of times to retry
        maxSleepMs - max time in ms to sleep on each retry
    • Method Detail

      • getBaseSleepTimeMs

        public int getBaseSleepTimeMs()
      • getSleepTimeMs

        protected long getSleepTimeMs​(int retryCount,
                                      long elapsedTimeMs)
      • getN

        public int getN()
      • allowRetry

        public boolean allowRetry​(int retryCount,
                                  long elapsedTimeMs,
                                  RetrySleeper sleeper)
        Description copied from interface: RetryPolicy
        Called when an operation has failed for some reason. This method should return true to make another attempt.
        Specified by:
        allowRetry in interface RetryPolicy
        Parameters:
        retryCount - the number of times retried so far (0 the first time)
        elapsedTimeMs - the elapsed time in ms since the operation was attempted
        sleeper - use this to sleep - DO NOT call Thread.sleep
        Returns:
        true/false