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(":")[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="#["test"]"
doc:name="name" />
<expression-component doc:name="Expression">
<![CDATA[message.outboundProperties[flowVars.name]=payload.split(':')1];]]>
</expression-component>
</flow>
我在 mule 中使用 message-properties 组件。我需要设置一个动态键名,因为它用于将自定义 headers 添加到 http-request。
<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
有没有办法为这个组件中的 属性 设置动态键名?
我遇到过类似的情况,我必须设置动态消息属性。 我尝试了几种方法来使用 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="#["test"]"
doc:name="name" />
<expression-component doc:name="Expression">
<![CDATA[message.outboundProperties[flowVars.name]=payload.split(':')1];]]>
</expression-component>
</flow>