2016-03-25 5 views
0

Ich habe ein Spring XD-Modul erstellt, das Zugriff auf seine ModuleMedatada haben muss.So erhalten Sie eine Spring XD Modul-Metadaten aus dem Modul selbst

Ich kann Metadaten durch ZooKeeperModuleMetadataRepository bekommen, aber ich bin noch herauszufinden, wie ich mein laufendes Modul eindeutig identifizieren kann.

die Probenmodul Gegeben:

@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; 
    } 
} 

Im plugin documentation betont wird, dass ein Modul seinen eigenen Kontext hat, aber es ist unklar, wie diesen Kontext zu bekommen (wenn möglich) und welche Informationen sie halten.

Jede Hilfe wäre sehr willkommen!

Antwort

1

Es stellt sich heraus, dass die Informationen über die Modulmetadaten über die Eigenschaftenquellen bereitgestellt werden. Sie können sie erhalten:

@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; 

    // ... 
+0

Korrekt, die Modul-Metadaten selbst ist nicht als Bean registriert; Es wird verwendet, um die Umgebung zu bevölkern. So können Sie beliebige Eigenschaften aus den Metadaten '@Value (" $ {prefix} ") String-Präfix;', sowie die Laufzeiteigenschaften 'xd. *' / –

Verwandte Themen