Netflix Archaius 动态配置
Netflix Archaius Dynamic Configuration
我正在将 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 文件以在固定时间间隔后读取属性?
您是否尝试过按照文档设置此系统变量?
-Darchaius.configurationSource.additionalUrls=file:///apps/myapp/application.xml
通过文档,我指的是入门网页 https://github.com/Netflix/archaius/wiki/Getting-Started
以下代码对我有用
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<String, Object> map = new HashMap<>();
// Code to read content from the resource
return pollResult.createFull(map);
}
}
我正在将 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 文件以在固定时间间隔后读取属性?
您是否尝试过按照文档设置此系统变量?
-Darchaius.configurationSource.additionalUrls=file:///apps/myapp/application.xml
通过文档,我指的是入门网页 https://github.com/Netflix/archaius/wiki/Getting-Started
以下代码对我有用
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<String, Object> map = new HashMap<>();
// Code to read content from the resource
return pollResult.createFull(map);
}
}