'Spring boot Circuit breaker - Resilience4 - Fallback method is getting triggered on 1st failure call itself
I have created a simple circuit breaker pattern using resilence4. The problem I am facing is, fallback method is getting called on 1st hit only. I am expecting fallback method to be called when at least 3 calls have failed in last 5 calls.
What am I missing in this setup? I feel yaml configs are not being applied.
My pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
Service.java
public class Service {
@Value("${service2.url:http://localhost:6060/service2}")
String serviceUrl;
@CircuitBreaker(name = "myCircuitBreaker", fallbackMethod = "fallback")
public String fetchData() {
System.out.println(" Making a request to " + serviceUrl + " at :" + LocalDateTime.now());
RestTemplate restTemplate = new RestTemplate();
return restTemplate.getForObject(serviceUrl, String.class);
}
public String fallback(Exception e) {
return "fallback value";
}
}
Contoller.java:
@RestController
public class Controller {
@Autowired
private Service service;
@GetMapping("/")
public String getValues() {
return service.fetchData();
}
}
application.yml:
resilience4j:
circuitbreaker:
instances:
myCircuitBreaker:
registerHealthIndicator: true
eventConsumerBufferSize: 10
automaticTransitionFromOpenToHalfOpenEnabled: true
failureRateThreshold: 50
minimumNumberOfCalls: 5
permittedNumberOfCallsInHalfOpenState: 3
slidingWindowSize: 10
waitDurationInOpenState: 5s
slidingWindowType: COUNT_BASED
management:
health:
circuitbreakers:
enabled: true
endpoints:
web:
exposure:
include: health
endpoint:
health:
show-details: always
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
