JobServiceImpl.java:
@CircuitBreaker(name = "jobsApiServiceGetAllJobs", fallbackMethod = "getAllJobsFallback")
public ResponseEntity<JobsResponse> getAllJobs() {
...
throw new ApiException();
}
public ResponseEntity<JobsResponse> getAllJobsFallback(Throwable throwable) {
log.error("Fallback method called");
}
application.properties:
resilience4j.circuitbreaker.instances.jobsApiServiceGetAllJobs.ignoreExceptions=ccp.shared.platform.exception.ApiException,ccp.shared.platform.exception.BadRequestApiException
每当抛出ccp.shared.platform.exception.ApiException
时,即使我已将其添加到application.properties
文件的ignoreExceptions
列表中,也会调用回退方法。我希望它在抛出ApiException
时不触发回退方法。我在堆栈溢出问题上尝试过类似的问题,但这些问题对我不起作用。我做错了什么吗?
看起来属性是在文档中定义的,但实际上它不起作用。存在对此的拉取请求->CircuitBreakerConfigurationProperties没有ignoreException属性。
同时,您可以使用常见的Spring+java配置来实现这一点:
@Bean
CircuitBreaker reportingApiCircuitBreaker(CircuitBreakerRegistry registry) {
CircuitBreakerConfig config = CircuitBreakerConfig.custom()
.ignoreExceptions(ApiException.class, BadRequestApiException.class)
.build();
return registry.circuitBreaker("yourCircuitBreakername", config);
}
请尝试这种方式
resilience4j.circuitbreaker.instances.jobsApiServiceGetAllJobs.ignoreExceptions[0]=ccp.shared.platform.exception.ApiException
resilience4j.circuitbreaker.instances.jobsApiServiceGetAllJobs.ignoreExceptions[1]=ccp.shared.platform.exception.BadRequestApiException