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调用)的独立回退。
答案 0 :(得分:0)
那是因为你没有指定HystrixCommandKey
。如果您没有指定HystrixCommandKey
,则HystrixCommandKey
是从类名派生的。即CommandHelloFailure将用作HystrixCommandKey
。
这意味着dbcall1
和dbcall2
将共享相同的断路器。
因为为每个HystrixCommandKey
创建了电路中断,而不是HystrixCommandGroupKey
。