Hystrix后退处理2 dbcall

时间:2017-08-29 08:56:45

标签: hystrix

Hystrix后备问题。 如果由于某些故障导致dbcall1进入回退并且发生短路,那么dbcall2也会进入后退evrytime,直到电路打开。

   public class CommandHelloFailure extends HystrixCommand<String> {

    private final String name;

    public CommandHelloFailure(String name) {
        super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"));
        this.name = name;
    }`enter code here`
String dbcall1 ()
{
new CommandHelloFailure().execute();
}
String dbcall2()
{
new CommandHelloFailure().execute();
}
    @Override
    protected String run() {
        throw new RuntimeException("this command always fails");
    }

    @Override
    protected String getFallback() {
        return "Hello Failure " + name + "!";
    }
}

但是我想要方法(DB调用)的独立回退。

1 个答案:

答案 0 :(得分:0)

那是因为你没有指定HystrixCommandKey。如果您没有指定HystrixCommandKey,则HystrixCommandKey是从类名派生的。即CommandHelloFailure将用作HystrixCommandKey

这意味着dbcall1dbcall2将共享相同的断路器。 因为为每个HystrixCommandKey创建了电路中断,而不是HystrixCommandGroupKey