Class RetryStrategy.MultiplicativeRetryStrategy

java.lang.Object
org.sterl.spring.persistent_tasks.api.RetryStrategy.MultiplicativeRetryStrategy
All Implemented Interfaces:
RetryStrategy
Enclosing interface:
RetryStrategy

public static class RetryStrategy.MultiplicativeRetryStrategy extends Object implements RetryStrategy
A retry strategy that determines the next retry time by multiplying the execution count by a scaling factor and adding the result to the current time in the specified temporal unit.

This strategy can be used to create retry intervals that increase multiplicatively with the number of attempts, providing a way to progressively delay retries.

Example: If scalingFactor = 2, unit = ChronoUnit.SECONDS, and executionCount = 3, the next retry will be scheduled after 2 * 3 = 6 seconds from the current time.

Note: The retry attempts will stop once the maximum execution count (maxExecutionCount) is reached.

  • Constructor Details Link icon

    • MultiplicativeRetryStrategy Link icon

      public MultiplicativeRetryStrategy()
  • Method Details Link icon

    • shouldRetry Link icon

      public boolean shouldRetry(int executionCount, @Nullable Exception error)
      Description copied from interface: RetryStrategy
      Determines whether a retry should be attempted based on the current execution count and the provided exception. (optional)
      Specified by:
      shouldRetry in interface RetryStrategy
      Parameters:
      executionCount - The number of attempts already made.
      error - The exception that triggered the retry.
      Returns:
      true if the current execution count is less than the maximum execution count; false otherwise.
    • retryAt Link icon

      public OffsetDateTime retryAt(int executionCount, @Nullable Exception error)
      Description copied from interface: RetryStrategy
      Calculates the time of the next retry attempt based on the current execution count and the provided exception.
      Specified by:
      retryAt in interface RetryStrategy
      Parameters:
      executionCount - The number of attempts already made.
      error - The exception that triggered the retry.
      Returns:
      OffsetDateTime of the next execution, null for no retry.