2

如果我有以下 Hystrix 命令:

public class TimeoutDependingOnParam extends HystrixCommand<String> {

    private final String name;

    public TimeoutDependingOnParam (String name) {
        super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"));
        this.name = name;
    }

    @Override
    protected String run() {

        if (name.equals("Looong")) {
           waitABillionYears();
        }

        return "Hello " + name + "!";
    }
}

调用者:

// no timeout for "Quick"
String s1 = new TimeoutDependingOnParam("Quick").execute();

// timeout for "Looong"
String s2 = new TimeoutDependingOnParam("Looong").execute();

如果Hystrix因为“Looong”的呼叫超时而打开电路,这是否意味着“Quick”的呼叫将被打开

4

1 回答 1

2

基本上是的,只要两者都具有与您的示例中相同的命令键。但是要使断路器断开,如有关断路器的文档中所述,还有更多条件。

您可以实现两个不同的命令,也可以根据参数在构造函数中设置 CommandKey。这是文档的摘录

public CommandHelloWorld(String name) {
    super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"))
            .andCommandKey(HystrixCommandKey.Factory.asKey("HelloWorld")));
    this.name = name;
}
于 2015-12-18T08:53:22.937 回答