Я потратил целый день, пытаясь понять, почему это не работает, поэтому я думаю, что было бы полезно, если бы я поделился вопросом и ответом.
Библиотека 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) {
...
}
}
Программа компилируется, запускается, однако аннотации полностью игнорируются.