javacircuit-breakerresilience4jresilience4j-retry

resilience4j springboot 2 annotations (@Retry, @CircuitBreaker) not working


I am working on a springboot application and want to add the resilience4j- retry mechanism. I did the following steps:

  1. Added the actuator, aop and resilience4j dependencies in 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. Created a method in the controller which will try and hit a dummy service(expected to fail). Added the @Retry annotation on my method.

     @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. Added the configuration to the application.properties

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

Also, I tried with maxRetryAttempts. But nothing changes.

I expected it to retry number of times that has been configured in the application.properties. However, it just tries once. Not sure if I am missing something. Can somebody please help with this?


Solution

  • Annotated methods must be public and not private.