аннотации resilience4j-spring-boot-2 (@Retry, @CircuitBreaker) полностью игнорируются

Я потратил целый день, пытаясь понять, почему это не работает, поэтому я думаю, что было бы полезно, если бы я поделился вопросом и ответом.

Библиотека Resilience4j предоставляет элегантное решение на основе аннотаций из Spring Boot 2. Все, что вам нужно сделать, это просто аннотировать автоматически добавляется метод (или класс) с одной из предоставленных аннотаций, например @CircuitBreaker, @Retry, @RateLimiter, @Bulkhead, @Thread и соответствующий шаблон устойчивости.

Я добавил ожидаемую зависимость к Maven pom.xml:

<dependency>
    <groupId>io.github.resilience4j</groupId>
    <artifactId>resilience4j-spring-boot2</artifactId>
    <version>${resilience4j.version}</version>
</dependency>

Теперь компилятор доволен, поэтому я могу добавить аннотации:

...
import org.springframework.stereotype.Service;
import io.github.resilience4j.retry.annotation.Retry;
...

@Service
public class MyService {
    ...
    @Retry(name = "get-response")
    public MyResponse getResponse(MyRequest request) {
        ...
    }
}

Программа компилируется, запускается, однако аннотации полностью игнорируются.


person Honza Zidek    schedule 08.10.2020    source источник


Ответы (1)


Согласно документации resilience4j-spring-boot2:

Модуль ожидает, что spring-boot-starter-actuator и spring-boot-starter-aop уже предоставлены во время выполнения.

Итак, весь фокус в том, чтобы добавить также недостающие зависимости в Maven pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>
person Honza Zidek    schedule 08.10.2020