Mule ESB:如何在 Message Properties Key 中使用 MEL 表达式?

Mule ESB: How to use MEL expression in Message Properties Key?

我在 mule 中使用 message-properties 组件。我需要设置一个动态键名,因为它用于将自定义 headers 添加到 http-request。

<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

有没有办法为这个组件中的 属性 设置动态键名?

我遇到过类似的情况,我必须设置动态消息属性。 我尝试了几种方法来使用 message-properties-transformer 进行设置,但没有成功。

针对类似问题提交了一些错误,下面是 link

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>

您不仅可以从 payload/variables 中读取动态值。您还可以在其中调用自定义 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>