是否有一个Mule成语发送JMS消息而不覆盖应该返回的有效负载?

时间:2013-03-12 12:53:16

标签: mule

我想在处理REST请求的开始和结束时发送JMS消息。我可以这样做:

<set-variable variableName="savedPayload" value="#[payload]" doc:name="Variable" />
<scripting:component doc:name="Groovy">
    <scripting:script engine="Groovy">
        <scripting:text><![CDATA[
            '{"event" : "TRY"}'
        ]]></scripting:text>
    </scripting:script>
</scripting:component>
<jms:outbound-endpoint queue="event.detail" connector-ref="jmsConnector" />
<expression-transformer evaluator="groovy" expression="savedPayload" />

本质上,JMS只用于记录进入和退出(SUCCESS或FAILED),同时保留已保存的消息,上面的代码使用变量进行保存。在Mule流程中这样做的更短,惯用的方法是什么?

编辑:

换句话说,有没有办法发送带有效负载的出站消息,而不需要保存/恢复来挂起响应有效负载?

3 个答案:

答案 0 :(得分:1)

您可以使用Async范围。它将在不同的分支中异步执行您的消息处理器,您不必担心保存/恢复有效负载。

<async>
    <scripting:component doc:name="Groovy">
      <scripting:script engine="Groovy">
        <scripting:text><![CDATA[
            '{"event" : "TRY"}'
        ]]></scripting:text>
      </scripting:script>
   </scripting:component>
  <jms:outbound-endpoint queue="event.detail" connector-ref="jmsConnector" />
</async>

有关异步范围的更多详细信息:http://www.mulesoft.org/documentation/display/current/Async+Scope+Reference

答案 1 :(得分:0)

尝试使用Wire Tap路由器。通过这种方式,您可以将有效负载传递到另一个通道,您可以在其中修改或退出它,而不会打扰您的主要cahnnel。 Mule Routers Guide

答案 2 :(得分:0)

最佳选择是消息丰富: - https://developer.mulesoft.com/docs/display/current/Message+Enricher
消息丰富组件不会干扰现有的有效负载,您可以在其中设置任何内容......它不会影响有效负载