我在mule中使用了message-properties组件。我需要设置一个动态密钥名称,因为它用于向http请求添加自定义标头。
<message-properties-transformer doc:name="Message Properties" scope="session">
<add-message-property key="#[flowVars.name]" value="#[payload.split(":")[1]]"/>
</message-properties-transformer>
记录输出时,表明该键未评估其中包含的MEL表达式:
SESSION scoped properties: #[flowVars.name]=Basic pokpogytg788t878
有没有办法为此组件中的属性设置动态键名?
答案 0 :(得分:1)
我遇到过类似的情况,我必须设置动态消息属性。 我尝试了几件事来用 message-properties-transformer 设置它,但没有运气。
针对类似问题提交了一些错误,下面是链接
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="#["test"]"
doc:name="name" />
<expression-component doc:name="Expression">
<![CDATA[message.outboundProperties[flowVars.name]=payload.split(':')1];]]>
</expression-component>
</flow>