2017-11-12 2 views
0

Ich verwende die Message-Eigenschaften-Komponente in Mule. Ich muss einen dynamischen Schlüsselnamen einstellen, wie dieser benutzt wird, um kundenspezifische Überschriften zu einer HTTP-Anfrage hinzuzufügen.Mule ESB: Wie MEL-Ausdruck in Nachrichteneigenschaften Schlüssel verwenden?

<message-properties-transformer doc:name="Message Properties" scope="session"> 
    <add-message-property key="#[flowVars.name]" value="#[payload.split(&quot;:&quot;)[1]]"/> 
</message-properties-transformer> 

Wenn die Ausgabe der Anmeldung, zeigt es, dass der Schlüssel für den MEL Ausdruck nicht ausgewertet hat enthielt innen:

SESSION scoped properties: #[flowVars.name]=Basic pokpogytg788t878 

Gibt es eine Möglichkeit, einen dynamischen Schlüsselnamen für eine Eigenschaft in dieser Komponente der Einstellung?

Antwort

1

Ich habe ähnliche Situation konfrontiert, wo ich dynamische Nachrichteneigenschaften festlegen musste. Ich habe versucht, es mit Nachricht-Eigenschaften-Transformator, aber zu keinem Glück zu setzen.

Es gibt einige Fehler für ähnliches Problem eingereicht ist, ist unten der Link

Cannot use MEL expression as key in Message Properties transformer

Nach irgendwann versucht, ich habe das mit etwas Abhilfe zu arbeiten.

Sie können versuchen, es mit Ausdruck Komponente zu umgehen.

 <expression-component doc:name="Expression"> 
     <![CDATA[message.outboundProperties[flowVars.name]=payload.split(':')1];]]> 
     </expression-component> 

Nicht nur Sie dynamische Werte von Nutzlast lesen/variables.But können Sie auch Ihre individuellen java/groovy Methoden in ihm nennen.

Probieren Sie unten Code-Snippet, und lassen Sie uns wissen, ob das für Sie funktioniert.

<flow name="testFlow"> 
     <http:listener config-ref="HTTP_Listener_Configuration" 
      path="/test" doc:name="HTTP" allowedMethods="POST" /> 
     <set-variable variableName="name" value="#[&quot;test&quot;]" 
      doc:name="name" /> 
     <expression-component doc:name="Expression"> 
     <![CDATA[message.outboundProperties[flowVars.name]=payload.split(':')1];]]> 
     </expression-component> 
    </flow>