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 方法

可以看到运行后输出了已下日志

当前调用失败