The Resilience4j Aspects order is the following:Retry ( CircuitBreaker ( RateLimiter ( TimeLimiter ( Bulkhead ( Function ) ) ) ) )
so Retry
is applied at the end (if needed).
If you need a different order, you must use the functional chaining style instead of the Spring annotations style or explicitly set aspect order using the following properties:
- resilience4j.retry.retryAspectOrder - resilience4j.circuitbreaker.circuitBreakerAspectOrder - resilience4j.ratelimiter.rateLimiterAspectOrder - resilience4j.timelimiter.timeLimiterAspectOrder - resilience4j.bulkhead.bulkheadAspectOrder
For example – to make Circuit Breaker starts after Retry finish its work you must set retryAspectOrder
property to greater value than circuitBreakerAspectOrder
value (the higher value = the higher priority).
resilience4j: circuitbreaker: circuitBreakerAspectOrder: 1 retry: retryAspectOrder: 2