【问题标题】:Spring Cloud: How to define default fallback for Hystrix in Zuul gateway?Spring Cloud:如何在 Zuul 网关中为 Hystrix 定义默认回退?
【发布时间】:2016-03-07 15:31:36
【问题描述】:

我正在使用 Spring Cloud Brixton.M3 和 Spring Boot 1.3.0.RELEASE。我对此有点陌生(尤其是在 Spring Cloud 中)。我已经创建了注册表服务器(即 Eureka 实例)、配置服务器和网关。
根据我的要求,我在我的一个过滤器中拦截每个到达网关的请求,以从 Header 中提取所需的信息,并基于此我使用Feign Client 抛出异常或转发/验证该请求。有时,当 hystrix 无法访问相应的服务或由于任何其他问题时,它会抛出 HystrixRuntimeException

所以我想要的是:

  1. 为每个转发请求提供默认的回退方法,以便我可以相应地读取和处理它。
  2. @ControllerAdvice 之外的全局异常处理,因为我没有提供任何自定义@HystrixCommand 和控制器来调用服务(基于AOP 的解决方案?)。
  3. 是否可以拦截每个失败的请求并重试它们一定次数?在内部它可能正在发生,但我是否可以覆盖此功能并处理每个失败的请求,无论是因为 TimedOutException 还是因为 HttpConnectionPool 异常?

更新
在 Zuul 网关中提供自己的路由是一种好习惯吗?一起使用@RestController@HystrixCommand 吗? (我认为这是个坏主意,因为随着时间的推移,我们最终会得到很多控制器,因此智能路由的实际使用不会按预期工作)

【问题讨论】:

    标签: java spring spring-boot spring-cloud


    【解决方案1】:

    目前有一个 open issue 用于 feign 的后备。还有一个 open issue 用于 zuul 的后备。

    【讨论】:

    • 第二个链接说每条路线的后备。这是否意味着不编写自己的 hystrix 命令?我的意思是每条路线的默认动态回退?到目前为止,我从 Hystrix Fallback 中了解到的是,我们提供了 @HystrixCommand 一个参数作为 fallbackmethod。不是那个吗?
    • 哦,我明白了。感谢您的提示。我已经更新了我的问题。 ;)
    猜你喜欢
    • 2020-08-08
    • 2016-12-20
    • 2017-07-27
    • 2016-04-03
    • 2017-06-18
    • 2017-02-08
    • 2018-08-27
    • 2015-12-06
    • 2018-04-05
    相关资源
    最近更新 更多