Class ExponentialBackoff

  • All Implemented Interfaces:
    RetryStrategy

    public class ExponentialBackoff
    extends Object
    implements RetryStrategy
    A truncated exponential backoff implementation of RetryStrategy that has a delay duration that exponentially increases with each retry attempt until an upper bound is reached after which every retry attempt is delayed by the provided max delay duration.
    • Constructor Detail

      • ExponentialBackoff

        public ExponentialBackoff()
        Creates an instance of ExponentialBackoff with a maximum number of retry attempts configured by the environment property Configuration.PROPERTY_AZURE_REQUEST_RETRY_COUNT, or three if it isn't configured or is less than or equal to 0. This strategy starts with a delay of 800 milliseconds and exponentially increases with each additional retry attempt to a maximum of 8 seconds.
      • ExponentialBackoff

        public ExponentialBackoff​(int maxRetries,
                                  Duration baseDelay,
                                  Duration maxDelay)
        Creates an instance of ExponentialBackoff.
        Parameters:
        maxRetries - The max retry attempts that can be made.
        baseDelay - The base delay duration for retry.
        maxDelay - The max delay duration for retry.
        Throws:
        IllegalArgumentException - if maxRetries is less than 0 or baseDelay is less than or equal to 0 or maxDelay is less than baseDelay.
    • Method Detail

      • getMaxRetries

        public int getMaxRetries()
        Description copied from interface: RetryStrategy
        Max number of retry attempts to be make.
        Specified by:
        getMaxRetries in interface RetryStrategy
        Returns:
        The max number of retry attempts.
      • calculateRetryDelay

        public Duration calculateRetryDelay​(int retryAttempts)
        Description copied from interface: RetryStrategy
        Computes the delay between each retry.
        Specified by:
        calculateRetryDelay in interface RetryStrategy
        Parameters:
        retryAttempts - The number of retry attempts completed so far.
        Returns:
        The delay duration before the next retry.