我正在通过使用带有hystrix的Spring云断路器抽象https://spring.io/projects/spring-cloud-circuitbreaker来实现断路器。 我从这里{@ 3}}
默认情况下,从端点返回的HTTP Statuse组5.x.x和4.x.x都是打开电路的信号。 我只想将其限制为服务器错误5.x.x,并排除4.x.x之类的错误要求。在我的情况下,应该通知服务的客户请求不正确,并且不应从后备状态获得响应。
我不知道如何实现它。使用Spring Cloud Circuit Breaker抽象对我来说是重要的,因此使用@HystrixCommand(ignoreExceptions = {...})是不可行的。我想以更具声明性的方式(如配置)进行配置。
答案 0 :(得分:0)
您可以尝试这里提到的堆栈溢出本身的答案之一-> Configuring hystrix command properties using application.yaml in Spring-Boot application
答案 1 :(得分:0)
RestTemplate抛出这些运行时异常-
HttpClientErrorException
-对于客户端错误,即HTTP 4XX HttpServerErrorException
-用于服务器端错误,即HTTP 5XX Hystrix除了基础资源发生故障外,不关心任何其他问题。此外,它使用异常来推断基础资源已发生故障。
如果您不想在HTTP 4XX上打开电路,只需在catch
类中HttpClientErrorException
HttpBinService.java
。您修改后的方法将是-
public Map get() {
try{
return rest.getForObject("https://httpbin.org/get", Map.class);
}catch(HttpClientErrorException e){
// Log something
// return null or something
}
}