0

我在 mule 中使用消息属性组件。我需要设置一个动态键名,因为它用于将自定义标头添加到 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

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

4

1 回答 1

1

我遇到过类似的情况,我必须设置动态消息属性。我尝试了几件事来设置它message-properties-transformer,但没有运气。

有一些针对类似问题的错误提交,以下是链接

不能使用 MEL 表达式作为消息属性转换器中的键

在尝试了一段时间后,我得到了一些解决方法。

您可以尝试使用Expression component解决它。

        <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>
于 2017-11-13T07:47:05.897 回答