Mule ESB:如何在消息属性键中使用MEL表达式?

时间:2017-11-12 14:52:53

标签: mule-esb

我在mule中使用了message-properties组件。我需要设置一个动态密钥名称,因为它用于向http请求添加自定义标头。

<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 个答案:

答案 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="#[&quot;test&quot;]"
            doc:name="name" />
        <expression-component doc:name="Expression">
        <![CDATA[message.outboundProperties[flowVars.name]=payload.split(':')1];]]>
        </expression-component>
    </flow>