教程:一起学习Hystrix--Hystrix处理异常机制(降级方法)
目录 降级 异常传递 惊喜 Fallback(降级) 我们可以通过增加一个 fallback (回退)方法在hystrix命令实现优雅降级,如果主命令失败,hystrix可以获取一个默认值或者值集合。我们可能想为更多的可能失败的hrstrix命令实现一个回退方法,但是会有以下几种例外: 执行写操作的命令 如果设计的hrstrix命令是执行一个写操作而不是返回一个结果(这个写操作在 HystrixCommand 通常返回 void,在 HystrixObservableCommand 返回一个空的可观察者),此场景下执行回退方法没有什么意义,如果写操作失败,服务方应该是希望告知调用方,让调用方再进一步处理。 批处理系统/离线分析 如果Hystrix命令正在填充一个缓存,或者生成一个报告,或者做任何离线计算。如果发生错误,通常应该将错误 告知调用方,让调用方做进一步处理,而不应该发送一个默认的响应。 如果命令执行异常,无论 Hystrix命令是否有回退方法,hystrix命令状态、断路器/度量器都会更新为此条命令失败。 在一个普通的 HystrixCommand 中通过重写 getFallback() 方法实现一个回退方法,比如 run() 方法有异常, hystrix会为所有类型的异常执行回退方法,比如 超时、线程池或信号量拒绝,以及断路器短路。 包含回退方法的示例如下: