我们已经实现了一个全局异常策略作为我们的Mule流的一部分,它将有效负载对象重定向到JMS出站端点 - 端点将对象作为有效负载接收,但我们还希望在有效负载对象本身中包含异常信息,以便接收线程可以使用它。例如,以下块工作正常,但如何拦截异常并使用异常摘要和堆栈信息更新有效负载?
catch-exception-strategy name="globalCatchStrategy"
set-payload value="Error : #[exception.summaryMessage]"/
jms:outbound-endpoint connector-ref="ActiveMQ" doc:name="JMS" queue="${jms.outbound.queue}"
catch-exception-strategy
注意 - 我必须删除打开和关闭XML大括号,以便在stackoverflow中呈现它。
答案 0 :(得分:0)
好的,我设法通过以下方式解决了这个问题 - 我们在JMS消息中发送了一个可序列化的DTO作为有效负载,如果流中存在异常则会返回 - 所以我将异常属性添加到了有效负载对象并在上面的JMS出站端点之前附加一个变换器 - 所以现在流程看起来像这样
catch-exception-strategy name="globalCatchStrategy"
custom-transformer class="MyTransformerClass" doc:name="Exception Extractor"
jms:outbound-endpoint connector-ref="ActiveMQ" doc:name="JMS" queue="${jms.outbound.queue}"
catch-exception-strategy
在MyTransformerClass实例中获取有效负载
ExceptionPayload exceptionPayload = message.getExceptionPayload();