Class ExponentialBackoff

java.lang.Object
com.azure.core.http.policy.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 Details

    • 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(ExponentialBackoffOptions options)
      Creates an instance of ExponentialBackoff.
      Parameters:
      options - The ExponentialBackoffOptions.
      Throws:
      NullPointerException - if options is null.
    • 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 Details

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