【问题标题】:Hystrix runtime configuration with Spring-Cloud-Config instead of Archaius?使用 Spring-Cloud-Config 而不是 Archaius 的 Hystrix 运行时配置?
【发布时间】:2016-06-30 06:41:31
【问题描述】:
【问题讨论】:
标签:
java
spring-cloud
netflix
hystrix
【解决方案1】:
经过几天的研究,我设法使用 Spring Cloud Config 动态配置 Hystrix 属性。我还做了一个关于在运行时配置 Hystrix 实例属性的小演示。
首先,each Hystrix property has four levels of precendence:
- 全局默认值
- 动态全局默认值
- 实例默认值
- 动态实例属性。
第 1 层和第 3 层仅支持静态配置。由于在 Hystrix Wiki 中没有对第二级(动态全局默认)进行大量讨论,因此我选择 Dynamic Instance Property 进行运行时配置。不过,我相信我的方法也应该适用于 Dynamic Global Default。
做法很简单。首先使用 @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() 设置属性