I am usin Spring Cloud Circuit Breaker Timelimiter with Spring 2.7.10 and Java 8. Problem is that fallback is called (or No fallback available) instantly and circuitbreaker.run never goes to the called method. What could be the problem?
Sorry for not providing the full code, it is restricted!
Timelimiter configuration
@Configuration
public class TimeoutConfig {
@Bean
public Customizer<Resilience4JCircuitBreakerFactory> specificCustomConfiguration1() {
TimeLimiterConfig timeLimiterConfig = TimeLimiterConfig.custom()
.timeoutDuration(Duration.ofSeconds(5))
.build();
return factory -> factory.configure(builder -> builder
.timeLimiterConfig(timeLimiterConfig).build(),"serviceTimeout");
}
}
A Timelimiter service
@Service
public class TimeoutService {
@Autowired
ErrorMapper errorMapper;
@Autowired GetServices getServices;
@Autowired
private CircuitBreakerFactory circuitBreakerFactory;
public GetServicesResponse runTimeout(GetServicesRequest request) {
CircuitBreaker circuitBreaker = circuitBreakerFactory.create("serviceTimeout");
return circuitBreaker.run(()->getServices.handle(request));
}
}
Controller method, where Timelimiter is called
@Override
public GetServicesResponse getServices(GetServicesRequest request) {
try {
return timeoutService.runTimeout(request);
} catch (Exception e) {
return errorMapper.exceptionToResponse(request, e, GetServicesResponse.class);
}
}