Аннотации resilience4j springboot 2 (@Retry, @CircuitBreaker) не работают

Я работаю над приложением springboot и хочу добавить механизм resilience4j-retry. Я сделал следующие шаги:

  1. Добавлены зависимости привода, aop и resilience4j в 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>
    
     <dependency>
         <groupId>io.github.resilience4j</groupId>
         <artifactId>resilience4j-spring-boot2</artifactId>
     </dependency>
    
  2. Создан метод в контроллере, который будет пытаться поразить фиктивную службу (ожидается, что она потерпит неудачу). Добавлена ​​аннотация @Retry к моему методу.

     @GetMapping("/sample-api")
     @Retry(name = "sample-api")
     private String sampleApi() {
      log.info("Sample Api call receieved");
      ResponseEntity<String> forEntity = new RestTemplate().getForEntity("http://localhost:8080/some-dummy-url", String.class);
      return forEntity.getBody();
     }
    
  3. Добавил конфигурацию в application.properties

resilience4j.retry.instances.sample-api.maxAttempts = 5

Также я пробовал с maxRetryAttempts. Но ничего не меняется.

Я ожидал, что он повторит попытку столько раз, сколько было настроено в application.properties. Однако он пытается только один раз. Не уверен, что я что-то упускаю. Может кто-нибудь помочь с этим?


person dgaur    schedule 28.03.2021    source источник


Ответы (1)


Аннотированные методы должны быть общедоступными, а не частными.

person Robert Winkler    schedule 07.04.2021
comment
Спасибо, Роберт. Это сработало. - person dgaur; 09.04.2021