2Hystrix 回退 · SpringCloud微服务实战 · 看云
Hystrix 回退
导航
上面的简单使用可能很多人觉得有点懵逼,哎,这玩意跟Hystrix有啥关系?请不要懵逼,下面一步一步介绍,请耐心。
在实现HystrixCommand方法中,有一个方getFallback()法我们需要重写,当系统断路器被打开时、实际执行命令失败时等就会触发这个方法。我们可以在这个方法中定义自己的回退逻辑。
本节代码地址
2.1 新建FwHystrixCommondFallBack类
我们在run()方法中设置延迟10秒钟,web默认1秒钟没有响应寄回发生超时异常。因此在运行的时候回触发getFallback()方法
public class FwHystrixCommondFallBack extends HystrixCommand<String> {
private final String name;
protected FwHystrixCommondFallBack(String name) {
super(HystrixCommandGroupKey.Factory.asKey("myGroup"));
this.name=name;
}
@Override
protected String run() {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return this.name+":"+Thread.currentThread().getName();
}
@Override
protected String getFallback() {
return "当前调用失败";
}
public static void main(String[] args) {
String test = new FwHystrixCommondFallBack("test").execute();
System.out.println(test);
}
}
2.3 运行main 方法
可以看到运行后输出了已下日志
当前调用失败