Java Netflix Archaius动态配置

Java Netflix Archaius动态配置,java,hystrix,netflix-archaius,Java,Hystrix,Netflix Archaius,我正在将Hystrix集成到现有项目中,我希望从xml文件中读取配置值,而不是使用configuration Manager提供配置属性。当xml文件中的值更新时,我希望在运行时更新Hystrix配置 这是我遵循的指南: 我了解到目前为止,我可以使用PolledConfigurationSource和以下代码: PolledConfigurationSource source = ... AbstractPollingScheduler scheduler = ... DynamicConfi

我正在将Hystrix集成到现有项目中,我希望从xml文件中读取配置值,而不是使用configuration Manager提供配置属性。当xml文件中的值更新时,我希望在运行时更新Hystrix配置

这是我遵循的指南:

我了解到目前为止,我可以使用PolledConfigurationSource和以下代码:

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没有收到文件。我想我会尝试我在前面的评论中提到的方法。