Как войти или обработать оригинальное сообщение полезной нагрузки в Mule - PullRequest
2 голосов
/ 22 марта 2012
<flow>
<jms:inbound-endpoint queue="InputQueue"/>
<component class="MyComponent"/>
<choice>
    <when expression="/Response/Status/Success" evaluator="xpath">
         <jms:outbound-endpoint queue="LogInputQueue"/>
         <jms:outbound-endpoint queue="SuccessQueue"/>
    </when>
    <when expression="/Response/Status/Error" evaluator="xpath">
         <jms:outbound-endpoint queue="LogInputQueue"/>
         <jms:outbound-endpoint queue="ErrorQueue"/>
    </when>
    <otherwise>
        <jms:outbound-endpoint queue="LogInputQueue"/>
        <jms:outbound-endpoint queue="ExceptionQueue"/>
    </otherwise>
</choice>
</flow>

В этом потоке MyComponent возвращает либо сообщение об успешном завершении в качестве ответа, либо сообщения об ошибке, либо как исключение?

Мне нужно записать исходное сообщение из InputQueue в LogInputQueue во всех случаях. Как мне добиться этого в моем потоке?

Ответы [ 3 ]

2 голосов
/ 08 июня 2012

Вы хотели создать файл журнала?В этом случае вы должны реализовать log4j, используя slf4j, и использовать строку

<logger level="log_level" category="your_category" message="#[message:payload]"/>

, где log_level - желаемый уровень ведения журнала - «ошибка», «отладка», «информация» и т. Д. *

your_category - это ваша категория журнала, определенная в файле log4j.properties (на самом деле это необязательно)

, а message = "# [expression: value]" - ваше сообщение, которое нужно зарегистрировать, в виде выражения:область действия: комбинация клавиш.Область действия здесь необязательна.

0 голосов
/ 08 августа 2015

Поскольку вам необходимо отправить исходное сообщение из InputQueue в LogInputQueue во всех случаях, как вы упомянули, что вам нужно сделать, это: -
1. Удалить <jms:outbound-endpoint queue="LogInputQueue"/> из всех дел в блоке выбора
2. Сохраните исходную полезную нагрузку из InputQueue в переменной, поместив ее сразу после входящей конечной точки JMS
3. В конце потока после выбора маршрутизатора установите полезную нагрузку в компоненте set полезной нагрузки из переменной, в которой вы сохранили исходную полезную нагрузку
4. Теперь поставьте <jms:outbound-endpoint queue="LogInputQueue"/> после установленного компонента полезной нагрузки.

Таким образом вы сможете отправить исходную полезную нагрузку в LogInputQueue согласно вашему требованию .

0 голосов
/ 27 мая 2015

Используя log4j или slf4j, вы можете регистрировать полезную нагрузку.

[полезная нагрузка], у нас есть компонент регистратора, использующий эту полезную нагрузку журнала в консоли.

...