Class RetryPolicy

java.lang.Object
io.dapr.durabletask.RetryPolicy

public final class RetryPolicy extends Object
A declarative retry policy that can be configured for activity or sub-orchestration calls.
  • Constructor Details

    • RetryPolicy

      public RetryPolicy(int maxNumberOfAttempts, Duration firstRetryInterval)
      Creates a new RetryPolicy object.
      Parameters:
      maxNumberOfAttempts - the maximum number of task invocation attempts; must be 1 or greater
      firstRetryInterval - the amount of time to delay between the first and second attempt
      Throws:
      IllegalArgumentException - if maxNumberOfAttempts is zero or negative
  • Method Details

    • setMaxNumberOfAttempts

      public RetryPolicy setMaxNumberOfAttempts(int maxNumberOfAttempts)
      Sets the maximum number of task invocation attempts; must be 1 or greater.

      This value represents the number of times to attempt to execute the task. It does not represent the maximum number of times to retry the task. This is why the number must be 1 or greater.

      Parameters:
      maxNumberOfAttempts - the maximum number of attempts; must be 1 or greater
      Returns:
      this retry policy object
      Throws:
      IllegalArgumentException - if maxNumberOfAttempts is zero or negative
    • setFirstRetryInterval

      public RetryPolicy setFirstRetryInterval(Duration firstRetryInterval)
      Sets the amount of time to delay between the first and second attempt.
      Parameters:
      firstRetryInterval - the amount of time to delay between the first and second attempt
      Returns:
      this retry policy object
      Throws:
      IllegalArgumentException - if firstRetryInterval is null, zero, or negative.
    • setBackoffCoefficient

      public RetryPolicy setBackoffCoefficient(double backoffCoefficient)
      Sets the exponential backoff coefficient used to determine the delay between subsequent retries. Must be 1.0 or greater.

      To avoid extremely long delays between retries, consider also specifying a maximum retry interval using the setMaxRetryInterval(java.time.Duration) method.

      Parameters:
      backoffCoefficient - the exponential backoff coefficient
      Returns:
      this retry policy object
      Throws:
      IllegalArgumentException - if backoffCoefficient is less than 1.0
    • setMaxRetryInterval

      public RetryPolicy setMaxRetryInterval(@Nullable Duration maxRetryInterval)
      Sets the maximum time to delay between attempts.

      It's recommended to set a maximum retry interval whenever using a backoff coefficient that's greater than the default of 1.0.

      Parameters:
      maxRetryInterval - the maximum time to delay between attempts or null to remove the maximum retry interval
      Returns:
      this retry policy object
    • setRetryTimeout

      public RetryPolicy setRetryTimeout(Duration retryTimeout)
      Sets the overall timeout for retries, regardless of the retry count.
      Parameters:
      retryTimeout - the overall timeout for retries
      Returns:
      this retry policy object
    • getMaxNumberOfAttempts

      public int getMaxNumberOfAttempts()
      Gets the configured maximum number of task invocation attempts.
      Returns:
      the configured maximum number of task invocation attempts.
    • getFirstRetryInterval

      public Duration getFirstRetryInterval()
      Gets the configured amount of time to delay between the first and second attempt.
      Returns:
      the configured amount of time to delay between the first and second attempt
    • getBackoffCoefficient

      public double getBackoffCoefficient()
      Gets the configured exponential backoff coefficient used to determine the delay between subsequent retries.
      Returns:
      the configured exponential backoff coefficient used to determine the delay between subsequent retries
    • getMaxRetryInterval

      public Duration getMaxRetryInterval()
      Gets the configured maximum time to delay between attempts.
      Returns:
      the configured maximum time to delay between attempts
    • getRetryTimeout

      public Duration getRetryTimeout()
      Gets the configured overall timeout for retries.
      Returns:
      the configured overall timeout for retries