Zuul中的Hystrix的使用(Zuul的回退)
阿新 • • 發佈:2019-01-14
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; } }; } }