1. 程式人生 > >Zuul中的Hystrix的使用(Zuul的回退)

Zuul中的Hystrix的使用(Zuul的回退)

1、pom.xml

在之前的pom中新增

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <!--客戶端只有當我們有了這個依賴之後,才能有那些狀態頁面的檢視,否則會報ErrorPage-->
        </dependency>

這個依賴是讓我們新增一些依賴的端點

2、application.yml

在之前的application.yml中新增

management:
  endpoints:
    web:
      exposure:
        include: hystrix.stream,health,info,routes

這段代表的是我們需要開放的端點,如果不進行配置,那麼只有health和info,配置會直接覆蓋掉原有的這兩個端點,然後再新增include裡面的端點

3、驗證zuul裡面配有hystrix(訪問hystrix.stream端點)

 4、可以嘗試根據之前的dashboard配置進行嘗試

5、Zuul的回退類

在E版本之前都是ZuulFallbackProvider,E版本之後就變成了FallbackProvider,直接新增類如下,即可

@Component
public class MyFallbackProvider implements FallbackProvider {

    @Override
    public String getRoute() {      //表明為哪個微服務提供回退,return "*"代表為所有微服務提供回退
        return "eureka-client-provider";
    }

    @Override
    public ClientHttpResponse fallbackResponse(String route, Throwable cause) {
        return new ClientHttpResponse() {
            @Override
            public HttpStatus getStatusCode() throws IOException {
                return HttpStatus.OK;       //獲取狀態碼(200,OK)
            }

            @Override
            public int getRawStatusCode() throws IOException {
                return 200;                 //返回數字狀態碼
            }

            @Override
            public String getStatusText() throws IOException {
                return "OK";            //返回字母狀態碼
            }

            @Override
            public void close() {

            }

            @Override
            public InputStream getBody() throws IOException {
                return new ByteArrayInputStream("連線異常".getBytes());     //返回的內容
            }

            @Override
            public HttpHeaders getHeaders() {
                HttpHeaders headers = new HttpHeaders();            //返回時的Header體的設定
                headers.setContentType(MediaType.APPLICATION_JSON);
                return headers;
            }
        };
    }
}