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 报错 Unable to find GatewayFilterFactory with name