2017-08-29 74 views
0

Hystrix回退问题。 如果dbcall1由于某种故障而发生故障并发生短路,则dbcall2也将进入故障预警模式,直到电路打开。Hystrix回退处理2 dbcall

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 + "!"; 
    } 
} 

但是我想独立回退的方法(数据库调用)。

+0

您的代码不能编译。请编辑并修复 – rjdkolb

+0

其伪代码..我面临的问题是1)如果dbcall1()由于实际故障而发生故障并发生短路,则对于withCircuitBreakerSleepWindowInMilliseconds时间,调用(dbcall1()和dbcall2 ())进入后备。 @rjdkolb – Nikita

回答

0

这是因为您没有指定HystrixCommandKey。如果您未指定HystrixCommandKeyHystrixCommandKey是从类名派生的。即CommandHelloFailure将被用作HystrixCommandKey

这意味着dbcall1dbcall2将共享相同的断路器。 由于Circuit Break是为每个HystrixCommandKey创建的,而不是HystrixCommandGroupKey

+0

谢谢你..issue已解决。 – Nikita