使用Spring-Cloud-Config而不是Archaius的Hystrix运行时配置?

时间:2016-03-15 00:57:52

标签: java spring-cloud netflix hystrix

我正在学习Spring-Cloud-Netflix并且我了解到Archaius用于Hystrix运行时配置。 (https://ahus1.github.io/hystrix-examples/manual.html#archaius

我还发现Archaius是一个软依赖,因为V1.5.0(https://github.com/Netflix/Hystrix/pull/1083):" Archaius现在是Hystrix的软依赖,所以你可以提供自己的配置机制。&# 34;

我的问题是,在运行时使用Spring-Cloud-Config配置Hystrix是否容易?我做了一些研究,但没有找到任何例子。

欣赏任何想法。

1 个答案:

答案 0 :(得分:6)

几天后'研究,我设法用Spring Cloud Config动态配置Hystrix属性。我还做了一个关于在运行时配置Hystrix实例属性的小型演示。

首先,each Hystrix property has four levels of precendence

  1. 全球默认
  2. 动态全局默认
  3. 实例默认
  4. 动态实例属性。
  5. 第1级和第3级仅支持静态配置。由于Hystrix Wiki中没有讨论第二级(动态全局默认),因此我选择动态实例属性进行运行时配置。但是,我相信我的方法也应该适用于动态全局默认

    这种做法很简单。首先使用@Value注释从Spring Cloud Config中提取配置值:

    @Value("{timeoutInMilliseconds:1500}")
    String timeout;
    

    然后在Hystrix实例中使用字符串timeout

    ConfigurationManager.getConfigInstance().setProperty("hystrix.command.HystrixHelloWorld.execution.isolation.thread.timeoutInMilliseconds", timeout);
    

    ConfigurationManager.getConfigInstance()Archaius method的位置,返回配置实例。 .setProperty()设置属性