我创建了一个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中强调模块有自己的上下文,但不清楚如何获取该上下文(如果可能)以及它拥有的信息。
非常感谢任何帮助!
答案 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;
// ...