0

我想在处理 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 将仅用于记录进入和退出(成功或失败),同时保留保存的消息,上面的代码使用变量来实现。在 Mule 流程中执行此操作的更短、更惯用的方法是什么?

编辑:

换句话说,有没有一种方法可以发送带有有效负载的出站消息,而无需挂起响应有效负载所需的保存/恢复?

4

3 回答 3

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

于 2013-03-12T15:12:49.923 回答
0

尝试使用 Wire Tap 路由器。通过这种方式,您可以将您的 paylaod 传递到另一个通道,您可以在其中修改或出站它,而不会干扰您的主通道。 骡路由器指南

于 2013-03-14T15:27:18.100 回答
0

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

于 2015-08-05T06:31:44.133 回答