使用 Spring-Cloud-Config 而不是 Archaius 的 Hystrix 运行时配置?
Posted
技术标签:
【中文标题】使用 Spring-Cloud-Config 而不是 Archaius 的 Hystrix 运行时配置?【英文标题】:Hystrix runtime configuration with Spring-Cloud-Config instead of Archaius? 【发布时间】:2016-06-30 06:41:31 【问题描述】:我正在研究 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 的软依赖,所以你可以提供自己的配置机制。”
我的问题是,在运行时使用 Spring-Cloud-Config 配置 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()
设置属性
【讨论】:
以上是关于使用 Spring-Cloud-Config 而不是 Archaius 的 Hystrix 运行时配置?的主要内容,如果未能解决你的问题,请参考以下文章
重命名 spring-cloud-config 原生配置文件
spring-cloud-config——Quick Start
问题 spring-cloud-config 和 spring-cloud-bus