Spring Cloud Gateway:retry 与 fallback

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud Gateway:retry 与 fallback相关的知识,希望对你有一定的参考价值。

参考技术A 上面的重试过滤器,有5个配置:

除了 retries 、 exceptions ,其他3项的对应的枚举类为:

重试过滤器源码位置: org.springframework.cloud.gateway.filter.factory.RetryGatewayFilterFactory 、 org.springframework.cloud.gateway.filter.factory.RetryGatewayFilterFactory.RetryConfig

首先必须确保加入如下依赖:

上面配置包含了一个 Hystrix 过滤器,该过滤器会应用 Hystrix 熔断与降级,会将请求包装成名为 fallback 的路由指令 RouteHystrixCommand , RouteHystrixCommand 继承于 HystrixObservableCommand ,其内包含了 Hystrix 的断路、资源隔离、降级等诸多断路器核心功能,当网关转发的请求出现问题时,网关能对其进行快速失败,执行特定的失败逻辑,保护网关安全。

配置中有一个可选参数 fallbackUri ,当前只支持 forward 模式的 URI 。如果服务被降级,请求会被转发到该 URI 对应的控制器。控制器可以是自定义的 fallback 接口;也可以使自定义的 Handler ,需要实现接口 org.springframework.web.reactive.function.server.HandlerFunction<T extends ServerResponse> 。

Spring Cloud Gateway 支持自定义 fallback 接口。在 gateway 模块定义 fallback 接口,示例如下:

说明:

当同时配置了重试过滤器和降级过滤器,降级过滤器需要配在重试过滤器之前:

可以看下 Spring Cloud 的开发成员怎么说的: Put hystrix before retry

Spring Cloud 进阶玩法

以上是关于Spring Cloud Gateway:retry 与 fallback的主要内容,如果未能解决你的问题,请参考以下文章

spring cloud gateway 如何工作

Spring Cloud Gateway集成

spring cloud gateway 的执行流程

spring cloud gateway 某些路由中跳过全局过滤器

spring cloud gateway 报错 Unable to find GatewayFilterFactory with name

Spring Cloud(18)——gateway