Spring Cloud断路器-如何控制打开什么HTTP状态电路

时间:2020-05-13 06:30:33

标签: java spring-boot spring-cloud hystrix circuit-breaker

我正在通过使用带有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 = {...})是不可行的。我想以更具声明性的方式(如配置)进行配置。

2 个答案:

答案 0 :(得分:0)

您可以尝试这里提到的堆栈溢出本身的答案之一-> Configuring hystrix command properties using application.yaml in Spring-Boot application

答案 1 :(得分:0)

RestTemplate抛出这些运行时异常-

  1. HttpClientErrorException-对于客户端错误,即HTTP 4XX
  2. 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
    }
}