Java Netflix Archaius动态配置
我正在将Hystrix集成到现有项目中,我希望从xml文件中读取配置值,而不是使用configuration Manager提供配置属性。当xml文件中的值更新时,我希望在运行时更新Hystrix配置 这是我遵循的指南: 我了解到目前为止,我可以使用PolledConfigurationSource和以下代码:Java Netflix Archaius动态配置,java,hystrix,netflix-archaius,Java,Hystrix,Netflix Archaius,我正在将Hystrix集成到现有项目中,我希望从xml文件中读取配置值,而不是使用configuration Manager提供配置属性。当xml文件中的值更新时,我希望在运行时更新Hystrix配置 这是我遵循的指南: 我了解到目前为止,我可以使用PolledConfigurationSource和以下代码: PolledConfigurationSource source = ... AbstractPollingScheduler scheduler = ... DynamicConfi
PolledConfigurationSource source = ...
AbstractPollingScheduler scheduler = ...
DynamicConfiguration configuration = new DynamicConfiguration(source, scheduler);
ConfigurationManager.install(configuration);
如何将PolledConfigurationSource指向xml文件,以便在固定时间间隔后读取属性?您是否尝试过按照文档设置此系统变量?
-Darchaius.configurationSource.AdditionalURL=file:///apps/myapp/application.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);
}
XmlPolled配置源代码
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);
}
}
公共类XMLPolledConfigurationSource实现PolledConfigurationSource{
@抑制警告(“静态访问”)
@凌驾
public PollResult轮询(布尔初始值,对象检查点)引发异常{
PollResult PollResult=null;
Map Map=newhashmap();
//从资源中读取内容的代码
返回pollResult.createFull(映射);
}
}
Hmm,我如何将-Darchaius.configurationSource.AdditionalURL设置为src/main/resource文件夹中的xml文件?除此之外,有人能够使用PolledConfigurationSource吗?正如指南中所建议的,我将扩展PolledConfigurationSource类,并使用StAX解析器从文件中读取内容,将它们放入HashMap并设置PollResult.createFull(map);当您运行java应用程序并仅使用文件名时,将其作为参数传递,它将解析其在类路径中的路径。。。如果它是一个可自执行的jar,您可以这样做java-jar myapp.jar-Darchaius…=config.xml
。应该根据文档工作。我尝试了额外的URL方法,但遗憾的是,Hystrix没有收到文件。我想我会尝试我在前面的评论中提到的方法。