Включить ошибку Mule в пользовательский объект, затем перенаправить на конечную точку O / JMS

#jms #mule

#jms #mule

Вопрос:

Мы внедрили глобальную стратегию исключения как часть нашего потока 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.

Ответ №1:

Хорошо, мне удалось решить эту проблему следующим образом — мы отправляем сериализуемый DTO в качестве полезной нагрузки в сообщении JMS, которое возвращается обратно, если в потоке есть исключение — поэтому я добавил атрибуты исключения к объекту полезной нагрузки и подключил преобразователь перед исходящей конечной точкой 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();