Gateway 网关 之 容错

过滤器:HystrixGatewayFilterFactory

  Spring Cloud Gateway 可以利用 Hystrix 实现服务降级等功能。

  当Gateway进行路由转发时,如果发现下游服务连接超时允许进行服务降级。

 

实现原理:当连接超时时,使用Gateway自己的一个降级接口返回托底数据,保证程序继续运行。

添加 Hystrix 依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

配置:

配置属性参考:HystrixGatewayFilterFactory 及 其内部类 Config,Hystrix 默认超时时间 1 秒

 

 

配置文件:

spring:
  cloud:
    gateway:
      routes:
        - id: member-demo
          uri: lb://my-member
          predcates:
            - name: Path
              args:
                - patterns=/member/**,/my-member/**
          filters:
            - name: Hystrix
              args:
                # 其中args.name 取值是任意的,最终会被设置为Hystrix的commandKey。但是不能省略,
                # 省略会导致org.springframework.cloud.gateway.filter.factory.HystrixGatewayFilterFactory.Config的Setter为null,
                #因为没有设置Hystrix的commandKey等内容时就没有执行Setter的构造方法。
                name: fallbackPage
                # 远程服务错误时, gateway 工程中哪个控制器逻辑返回降级结果,Controller 中的地址
                fallbackUri: forward:/downgrade/down

 

编写降级返回页面请求:

@RestController
@RequestMapping(value = "/downgrade")
public class DowngradeController {
 
   @GetMapping(value = "/down", produces = "text/html;charset=UTF-8")
   public String down() {
      String downResult =
            "<html>" +
            "  <body>" +
                  "Gateway 返回的结果,服务器忙,请稍后重试" +
            "  </body>" +
            "</html>";
      return downResult;
   }
}

 

>>>>>>>>>>>>>>  下一篇: https://www.cnblogs.com/chxlay/p/15150562.html    <<<<<<<<<<<<<<<<<<<<<

 

 
posted @ 2021-08-17 00:11  Vermeer  阅读(220)  评论(0)    收藏  举报