Annotation Type Retry


  • @Inherited
    @Documented
    @Retention(RUNTIME)
    @Target({METHOD,TYPE})
    @InterceptorBinding
    public @interface Retry
    The Retry annotation to define the number of the 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.
    • Optional Element Summary

      Optional Elements 
      Modifier and Type Optional Element Description
      java.lang.Class<? extends java.lang.Throwable>[] abortOn
      The list of exception types that should not trigger a retry.
      long delay
      The delay between retries.
      java.time.temporal.ChronoUnit delayUnit
      The unit for delay().
      java.time.temporal.ChronoUnit durationUnit
      The duration unit for maxDuration().
      long jitter
      Set the jitter to randomly vary retry delays for.
      java.time.temporal.ChronoUnit jitterDelayUnit
      The delay unit for jitter().
      long maxDuration
      The max duration.
      int maxRetries
      The max number of the retries.
      java.lang.Class<? extends java.lang.Throwable>[] retryOn
      The list of exception types that should trigger a retry.
    • Element Detail

      • 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

        java.time.temporal.ChronoUnit delayUnit
        The unit for delay(). Defaults to ChronoUnit.MILLIS if not set.
        Returns:
        the delay unit
        Default:
        java.time.temporal.ChronoUnit.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

        java.time.temporal.ChronoUnit durationUnit
        The duration unit for maxDuration(). Defaults to ChronoUnit.MILLIS if not set.
        Returns:
        the duration unit
        Default:
        java.time.temporal.ChronoUnit.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

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

        java.lang.Class<? extends java.lang.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

        java.lang.Class<? extends java.lang.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:
        {}