#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();