从理解中,Hystrix回退逻辑在某些条件发生时被触发,例如请求超时,线程池以100%的容量运行或依赖性抛出异常。除了这三个因素,我可以添加更多条件,这些条件也被视为失败,例如任何特定的HTTP错误代码,如413(有效负载太大)?
答案 0 :(得分:2)
Hystrix的回退方法将在以下条件下调用
只有与用户代码直接相关的部分才是执行失败。
在这种情况下,run()
方法抛出的任何异常都会触发回退。通过HystrixCommand和Hystrix Javanica通过注释对纯Hystrix也是一样的。
只有一个异常不会触发HystrixBadRequestException
因此,如果您还要为HTTP 413状态代码触发回退,您只需要在方法中抛出任何异常。
如果您正在使用任何具有内置Hystrix支持的库(如Spring Cloud Feign),则需要实现库所需的内容。如果是Spring Cloud Feign,您可以实现自己的ErrorDecoder
。默认错误解码器将触发所有4XX,5XX错误的回退。如果你不想触发除413之外的任何后备4XX错误,你可以在其中抛出HystrixBadRequestException
。