java - 如何强制 Hystrix 断路器打开?

标签 java hystrix circuit-breaker

我想以编程方式强制断路器为特定组打开。我想我可以通过在组中的命令上设置配置以强制打开并运行该命令来做到这一点。但是,这似乎不起作用。这可能吗?我应该采取不同的方法吗?这是我在第二次 assertEquals 调用时失败的测试。

import com.netflix.hystrix.HystrixCommand;
import com.netflix.hystrix.HystrixCommandGroupKey;
import com.netflix.hystrix.HystrixCommandProperties;
import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class ForceCircuitBreakerCommandTest {

    @Test
    public void testForceOpen(){

        assertEquals(Boolean.TRUE, new FakeCommand().execute());

        new OpenCircuitBreakerCommand().execute();

        assertEquals(Boolean.FALSE, new FakeCommand().execute());

    }

    private class FakeCommand extends HystrixCommand<Boolean> {

        public FakeCommand(){
            super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("TestGroup")));
        }

        @Override
        public Boolean run(){return Boolean.TRUE;}

        @Override
        public Boolean getFallback() {return Boolean.FALSE;}
    }

    private class OpenCircuitBreakerCommand extends HystrixCommand<Boolean> {

        public OpenCircuitBreakerCommand(){
            super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("TestGroup"))
                    .andCommandPropertiesDefaults(HystrixCommandProperties.Setter()
                                    .withCircuitBreakerForceOpen(true)));
        }

        @Override
        public Boolean run(){return Boolean.TRUE;}

        @Override
        public Boolean getFallback() {return Boolean.FALSE;}
    }
}

最佳答案

我已经使用

设置了自定义属性,例如 "hystrix.command.HystrixCommandKey.circuitBreaker.forceOpen"
import com.netflix.config.ConfigurationManager;

ConfigurationManager.getConfigInstance()
    .setProperty("hystrix.command.HystrixCommandKey.circuitBreaker.forceOpen",
    true);

ConfigurationManager 是内部使用的 Archaius 实例。

关于java - 如何强制 Hystrix 断路器打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29165654/

相关文章:

java - 在运行时更新 Hystrix 配置

java - Apache Camel 断路器最初处于打开状态

java - Android-在Handler/runnable中启动新的Activity真的很慢

java - 动画软件中如何表示帧数据?

java - Android,如何将 int 变量的名称传递给弹出窗口?

java - 带有 Hystrix 断路器超时默认为 2 秒的 Spring Cloud Feign 客户端

java - Hystrix circuitBreaker.sleepWindowInMilliseconds 不工作

Spring-retry - @Circuitbreaker 没有重试

c# - Polly Policies 应该是单例吗?

java - itext 字体 UnsupportedCharsetException