【问题标题】:Custom error conditions to trigger fallback in Hystrix在 Hystrix 中触发回退的自定义错误条件
【发布时间】:2018-05-16 20:55:36
【问题描述】:

从理解来看,Hystrix fallback 逻辑是在请求超时、线程池以 100% 的容量运行或依赖抛出异常等特定条件时触发的。除了这 3 个因素之外,我是否可以添加更多也被视为失败的条件,例如任何特定的 HTTP 错误代码,如 413(有效负载太大)?

【问题讨论】:

    标签: rest hystrix netflix resiliency


    【解决方案1】:

    Hystrix的fallback方法会在以下情况下被调用

    • 电路开路
    • 信号量/线程池拒绝
    • 执行失败(您的方法抛出的任何异常,不包括 HystrixBadRequestException)
    • 方法超时(hystrix 超时)

    只有与用户代码直接相关的部分是执行失败。

    在这种情况下,run() 方法抛出的任何异常都会触发回退。纯 Hystrix 通过 HystrixCommand 和 Hystrix Javanica 通过注释也是一样的。

    只有一个异常不会触发HystrixBadRequestException

    因此,如果您还想为 HTTP 413 状态代码触发回退,您只需在方法中抛出任何异常即可。

    如果您正在使用任何具有内置 Hystrix 支持的库,例如 Spring Cloud Feign,您需要实现该库所需的东西。如果是 Spring Cloud Feign,你可以实现自己的ErrorDecoder。默认错误解码器将触发所有 4XX、5XX 错误的回退。如果不想触发除 413 之外的任何回退 4XX 错误,可以在其中抛出 HystrixBadRequestException

    【讨论】:

      猜你喜欢
      • 2018-04-23
      • 2017-10-30
      • 2012-10-09
      • 2017-03-22
      • 1970-01-01
      • 2016-05-26
      • 2017-10-10
      • 2012-02-13
      • 2016-03-07
      相关资源
      最近更新 更多