2016-03-01 7 views
0

Я интегрирую Hystrix в свой существующий проект, и я хочу прочитать значения конфигурации из xml-файла вместо того, чтобы загружать параметры конфигурации с помощью Configuration Manager. Когда значения обновляются в XML-файле, я хочу, чтобы конфигурация Hystrix обновлялась во время выполнения.Динамическая конфигурация Netflix Archaius

Это руководство я следующее: https://github.com/Netflix/archaius/wiki/Users-Guide

Я понимаю до сих пор, что я могу использовать PolledConfigurationSource и следующий код:

PolledConfigurationSource source = ... 
AbstractPollingScheduler scheduler = ... 
DynamicConfiguration configuration = new DynamicConfiguration(source, scheduler); 
ConfigurationManager.install(configuration); 

Как указать PolledConfigurationSource в файл XML для чтения свойства после фиксированного интервала времени?

ответ

1

следующий код сделал трюк для меня

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); 
    } 
} 
-1

Вы пробовали использовать эту системную переменную в соответствии с документацией? -Darchaius.configurationSource.additionalUrls=file:///apps/myapp/application.xml По документации, которую я имею в виду Начало работы веб-страницы https://github.com/Netflix/archaius/wiki/Getting-Started

+0

Хм, как я могу установить -Darchaius .configurationSource.additionalUrls в xml-файл в папке src/main/resource? – yousafsajjad

+0

Кроме того, кто-нибудь мог использовать PolledConfigurationSource? Как указано в руководстве, я буду расширять класс PolledConfigurationSource и использовать анализатор StAX для чтения содержимого из файла, поместить его в HashMap и установить PollResult.createFull (map); – yousafsajjad

+0

Вы передаете его в качестве параметра при запуске приложения java и используете только имя файла, он разрешит свой путь в пути к классам ... Если это самозагружаемая банка, вы сделали бы это так: java -jar myapp.jar -Darchaius ... = config.xml'. Должен работать в соответствии с документацией – Filip

 Смежные вопросы

  • Нет связанных вопросов^_^