Netflix Archaius动态配置
我正在将Hystrix集成到我现有的项目中,我想从xml文件中读取配置值,而不是使用Configuration Manager提供配置属性。 当在xml文件中更新值时,我希望在运行时更新Hystrix配置。
这是我关注的指南: https : //github.com/Netflix/archaius/wiki/Users-Guide
到目前为止我了解到我可以使用PolledConfigurationSource和以下代码:
PolledConfigurationSource source = ... AbstractPollingScheduler scheduler = ... DynamicConfiguration configuration = new DynamicConfiguration(source, scheduler); ConfigurationManager.install(configuration);
如何在固定的时间间隔后将PolledConfigurationSource指向xml文件以读取属性?
以下代码为我做了诀窍
private void initializeConfiguration() { // FixedDelayPollingScheduler is initialized with default system // settings // Fixed delay in milliseconds between two reads of the configuration // URLs // archaius.fixedDelayPollingScheduler.delayMills = 60000 // Initial delay in milliseconds of reading from the configuration // source // archaius.fixedDelayPollingScheduler.initialDelayMills = 30000 AbstractPollingScheduler scheduler = new FixedDelayPollingScheduler(); // Configuration source that brings dynamic changes to the configuration // via polling PolledConfigurationSource source = new XMLPolledConfigurationSource(); // Configuration that polls a PolledConfigurationSource according to the // schedule set by a scheduler DynamicConfiguration configuration = new DynamicConfiguration(source, scheduler); ConfigurationManager.install(configuration); // Registering configuration with an MBean and will be accessible for // read and update via JConsole ConfigJMXManager.registerConfigMbean(configuration); }
XMLPolledConfigurationSource源代码
public class XMLPolledConfigurationSource implements PolledConfigurationSource { @SuppressWarnings("static-access") @Override public PollResult poll(boolean inital, Object checkPoint) throws Exception { PollResult pollResult = null; Map map = new HashMap<>(); // Code to read content from the resource return pollResult.createFull(map); } }
您是否尝试过根据文档设置此系统变量? -Darchaius.configurationSource.additionalUrls=file:///apps/myapp/application.xml
文档我指的是入门网页https://github.com/Netflix/archaius/wiki/Getting-Started
- Powermock和Mockito。 在模拟和存根同一个类时,避免对类进行静态初始化
- Spring MVC:ModelAndViewContainer:View是; 默认模型{Some-Object}