Как получить метаданные модуля Spring XD из самого модуля

Я создал модуль Spring XD, которому нужен доступ к его ModuleMedatada.

Я могу получить метаданные через ZooKeeperModuleMetadataRepository, но мне еще предстоит узнать, как однозначно идентифицировать работающий модуль.

Учитывая образец модуля:

@MessageEndpoint
public class DummyAugmenter {

    @Transformer(inputChannel = "input", outputChannel = "output")
    public Message<?> augmentMessage(Message<?> originalMessage) throws IOException {
        // Get module metada
        System.out.println("I am associated with stream " + 
                                metadata.getUnitName() + 
                                " and my instance number is " + 
                                metadata.getId().getIndex());
        // Some logic 
        return newMsg;
    }
}

В документации по плагину подчеркивается, что модуль имеет свой собственный контекст, однако неясно, как получить этот контекст (если возможно) и какую информацию он содержит.

Любая помощь приветствуется!


person Hartimer    schedule 25.03.2016    source источник


Ответы (1)


Оказывается, информация о метаданных модуля предоставляется через источники свойств. Вы можете получить их через:

    @Value("${xd.module.name}")
    private String moduleName;

    @Value("${xd.module.sequence}")
    private String moduleIdx;

    @Value("${xd.container.id}")
    private String containerId;

    @Value("${xd.stream.name}")
    private String streamName;

    // ...
person Hartimer    schedule 25.03.2016
comment
Правильно, сами метаданные модуля не зарегистрированы как bean-компонент; он используется для заполнения окружающей среды. Таким образом, вы можете подключить любые свойства из метаданных @Value("${prefix}") String prefix;, а также свойства среды выполнения xd.*/ - person Gary Russell; 25.03.2016