是否有一种方法可以根据不同的调用方为一个hystrix命令设置不同的配置?

时间:2019-08-26 09:40:41

标签: java hystrix

我正在使用hystrix在现有的dubbo服务环境上添加流控制,并希望在一个服务界面上为不同的呼叫者设置不同的阈值。但是我在hystrix文档上找不到有关此信息。请帮助我有关此配置。

@HystrixCommand是为一个命令上的所有调用者设计的,我还没有找到将某些调用者及其自己的阈值添加到配置的方法

1 个答案:

答案 0 :(得分:0)

我认为至少不可能直接做到这一点:

将断路器放在某些代码上时,将其称为foo(),这意味着您要保护从foo()访问的资源 可以调用foo()的流并没有多大关系,如果从foo()访问的资源不堪重负,所有调用者都会感到“痛苦”。

因此,您可以做的是为两个将调用foo()的地方定义两个不同的命令,这意味着您将分别保护这两个地方:

public class ImportantService {
    public void foo() { 
       // was protected with circuit breaker
    }
}

public class Flow1 {

    private ImportantService importantService;

    @HystrixCommand - protect with Cirquit Breaker Configuration 1 
    public void doFlow1() {
       importantService.foo();
    }  
 }


     public class Flow2 {

    private ImportantService importantService;

    @HystrixCommand - protect with Cirquit Breaker Configuration 2 
    public void doFlow2() {
       importantService.foo();
    }  
 }

是的,从技术上讲,采用这种解决方法是可行的,但是我建议您在引入这种配置之前“三思而后行”,以确定它是否会达到保护像我上面解释的那样非常重要的资源的目的。