如何从模块本身获取Spring XD模块元数据

时间:2016-03-25 18:27:23

标签: spring 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;
    }
}

plugin documentation中强调模块有自己的上下文,但不清楚如何获取该上下文(如果可能)以及它拥有的信息。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分: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;

    // ...