Annotation Interface Retry


The retry annotation to define the number of retries. Any invalid config value causes FaultToleranceDefinitionException.

When a method returns and the retry policy is present, the following rules are applied:

  1. If the method returns normally (doesn't throw), the result is simply returned.
  2. Otherwise, if the thrown object is assignable to any value in the abortOn() parameter, the thrown object is rethrown.
  3. Otherwise, if the thrown object is assignable to any value in the retryOn() parameter, the method call is retried.
  4. Otherwise the thrown object is rethrown.
If a method throws a Throwable which is not an Error or Exception, non-portable behavior results.
See Also:
  • Element Details

    • maxRetries

      int maxRetries
      The max number of the retries.
      Returns:
      the max number of retries. -1 means retry forever. The value must be greater than or equal to -1.
      Default:
      3
    • delay

      long delay
      The delay between retries. Defaults to 0. The value must be greater than or equal to 0.
      Returns:
      the delay time
      Default:
      0L
    • delayUnit

      ChronoUnit delayUnit
      The unit for delay(). Defaults to ChronoUnit.MILLIS if not set.
      Returns:
      the delay unit
      Default:
      MILLIS
    • maxDuration

      long maxDuration
      The max duration. The max duration must be greater than the delay duration if set. 0 means not set.
      Returns:
      the maximum duration to perform retries for
      Default:
      180000L
    • durationUnit

      ChronoUnit durationUnit
      The duration unit for maxDuration(). Defaults to ChronoUnit.MILLIS if not set.
      Returns:
      the duration unit
      Default:
      MILLIS
    • jitter

      long jitter

      Set the jitter to randomly vary retry delays for. The value must be greater than or equals to 0. 0 means not set.

      The effective delay will be [delay - jitter, delay + jitter] and always greater than or equal to 0. Negative effective delays will be 0.
      Returns:
      the jitter that randomly vary retry delays by. e.g. a jitter of 200 milliseconds will randomly add between -200 and 200 milliseconds to each retry delay.
      Default:
      200L
    • jitterDelayUnit

      ChronoUnit jitterDelayUnit
      The delay unit for jitter(). Defaults to ChronoUnit.MILLIS if not set.
      Returns:
      the jitter delay unit
      Default:
      MILLIS
    • retryOn

      Class<? extends Throwable>[] retryOn
      The list of exception types that should trigger a retry.

      Note that if a method throws a Throwable which is not an Error or Exception, non-portable behavior results.

      Returns:
      the exception types on which to retry
      Default:
      {java.lang.Exception.class}
    • abortOn

      Class<? extends Throwable>[] abortOn
      The list of exception types that should not trigger a retry.

      This list takes priority over the types listed in retryOn().

      Note that if a method throws a Throwable which is not an Error or Exception, non-portable behavior results.

      Returns:
      the exception types on which to abort (not retry)
      Default:
      {}