2016-04-28 6 views
2

Ich versuche, einige Eigenschaften in meiner Prozessmethode festlegen, aber ich bin nicht in der Lage, herauszufinden, wie diese Eigenschaften in XML verwenden, wie ich Header-Werte in XML problemlos verwenden kann Verwendung Syntax: $ {} in.header.myKeyCamel - Verwendung der Eigenschaft in Spring DSL

mein Code hier:

<route> 
     <from uri="activemq:queue:start.queue" /> 
      <to uri="stream:out" /> 
      <process ref="jsonProcessor"></process> 
      <to uri="bean:validateInputIdentifiers?method=validation(${in.property.SourceMap}, ${in.property.DestinationMap})" /> 
    </route> 

Hier ist in.property.SourceMap Unbekannte Funktion. Was ist der richtige Weg? Wäre toll, wenn es etwas wie Header ist. Außerdem möchte ich nur die Eigenschaft und nicht den Header verwenden, da die Werte des Headers möglicherweise später in meinen Routen nicht erhalten bleiben.

Hier Verfahren Methodencode:

@Override 
public void process(Exchange exchange) throws Exception { 
    List<Map<String, String>> body = exchange.getIn().getBody(List.class); 
    Map<String, String> sourceMap = body.get(0); 
    Map<String, String> destinationMap = body.get(1); 
    exchange.setProperty("SourceMap", sourceMap); 
    exchange.setProperty("DestinationMap", destinationMap); 

} 

Bitte die Lösung.

Antwort

2

Nach Hit und Versuch bekam ich die Arbeitslösung:

<route> 
     <from uri="activemq:queue:start.queue" /> 
      <to uri="stream:out" /> 
      <process ref="jsonProcessor"></process> 
      <to uri="bean:validateInputIdentifiers?method=validation(${property.SourceMap}, ${property.DestinationMap})" /> 
    </route> 
6

es mehrere Lösungskombinationen für Ihr Problem sein könnte.

Beispieleigenschaft Schlüssel und Wert.

<cm:property name="app.user" value="PROD008"/> 

In Route, wenn Sie Header mit Eigenschaftswert festlegen möchten. Verwenden Sie das folgende Code-Snippet.

<setHeader headerName="password"> 
    <simple>${properties:app.user}</simple> 
</setHeader> 

Wenn Sie die Eigenschaft verwenden möchten, können Sie den folgenden Ausschnitt verwenden.

Für Ihr Beispiel: Wenn die Eigenschaften SourceMap und DestinationMap sind, können Sie einen der folgenden verwenden.

1. <to uri="bean:validateInputIdentifiers?method=validation(${property.SourceMap}, ${property.DestinationMap})" /> 

2. <to uri="bean:validateInputIdentifiers?method=validation({{SourceMap}},{{DestinationMap}})" /> 

Wenn Sie den Header anstelle der Eigenschaft verwenden möchten, verwenden Sie das folgende Code-Snippet.

<to uri="bean:validateInputIdentifiers?method=validation(${header.SourceMap}, ${header.DestinationMap})" />