我想在处理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流程中这样做的更短,惯用的方法是什么?
编辑:
换句话说,有没有办法发送带有效负载的出站消息,而不需要保存/恢复来挂起响应有效负载?
答案 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
消息丰富组件不会干扰现有的有效负载,您可以在其中设置任何内容......它不会影响有效负载