在《Hystrix-执行流程》中,我们说到几种情况会导致fallback,比如:
(1)短路器发现异常事件的占比达到一定的比例,直接开启短路。
(2)线程池或者信号量已满,直接reject掉。
(3)执行过程中超时,TimeoutException异常。
(4)执行过程中报错,抛出异常。
以上几种情况,只要发生其中一种,就会执行fallback方法进行降级处理。那么接下来我们看看程序的执行结果。
一、创建command
在执行过程中,我们直接抛出异常。
public class CommandFallback extends HystrixCommand<String> {
private final String name;
public CommandFallback(String name) {
super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"));
this.name = name;
}
@Override
protected String run() {
throw new RuntimeException("this command always fails");
}
@Override
protected String getFallback() {
return name + " from fallback method !";
}
}
二、执行command
public class CommandFallbackTest {
public static void main(String[] args) {
System.out.println(new CommandFallback("A").execute());
}
}