2017-11-12 9 views
0

私はmuleのmessage-propertiesコンポーネントを使用しています。私は動的キー名を設定する必要があります。これは、http-requestにカスタムヘッダーを追加するために使用されるためです。Mule ESB:メッセージプロパティキーでMEL式を使用するには?

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

出力をログに記録するとき、それはキーが評価されていない内部に含まれるMEL表現することを示しています

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

は、このコンポーネントでプロパティの動的なキー名を設定する方法はありますか?

答えて

1

私は動的なメッセージプロパティを設定する必要がある同様の状況に直面しています。 メッセージプロパティートランスで設定しようといくつか試みましたが、不運です。同様の問題のために提出されたいくつかのバグがあり

は、以下の私はいくつかの回避策に取り組んでいることだいつかしようとした後、リンク

Cannot use MEL expression as key in Message Properties transformer

にあります。

表現コンポーネントでお試しください。

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

ペイロード/変数から動的値を読み取ることができるだけでなく、カスタムjava/groovyメソッドを呼び出すこともできます。

以下のコードスニペットを試してみてください。

<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> 
関連する問題