自定义错误条件以触发Hystrix中的回退

时间:2017-12-03 05:44:38

标签: rest hystrix netflix resiliency

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

1 个答案:

答案 0 :(得分:2)

Hystrix的回退方法将在以下条件下调用

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

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

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

只有一个异常不会触发HystrixBadRequestException

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

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