Как извлечь имя потока и имя процессора сообщений с помощью MEL — MULE ESB

Я не уверен, как мы можем извлечь имя потока и имя процессора сообщений через MEL. Например, у меня есть несколько процессоров сообщений. Для ведения журнала мне нужно извлечь имя потока и обработчик сообщений, чтобы я мог узнать, что транзакция пересекла этот конкретный поток и его обработчик сообщений. Есть ли простой способ узнать. Пожалуйста, помогите мне. Пожалуйста, найдите скриншот ниже. Здесь мне нужно извлечь - установить полезную нагрузку и ее имя потока (flow1)

введите здесь описание изображения

Заранее спасибо.


person star    schedule 22.11.2014    source источник


Ответы (4)


Вы можете извлечь имя потока с помощью MEL: #[flow.name]

<flow name="name" doc:name="name">
    <http:inbound-endpoint address="http://localhost:8090/resources" doc:name="HTTP" />
    <logger message="name of flow: #[flow.name]" level="INFO" doc:name="Logger"/>
    <set-payload value="name" doc:name="Set Payload"/>
</flow>

or

flowConstruct.getName() in a Message Processor
person Julio Cejas    schedule 22.11.2014
comment
Благодаря тонну!! Это сработало!! Я могу извлечь имя потока. Есть ли способ извлечь messageProcessor Name. Любопытно, я пробовал как thz #[flow.processor] и #[flow.messageProcessor], но он возвращает ноль. Любая идея? - person star; 23.11.2014
comment
Если вы хотите знать, где выполняется сообщение процессора, я рекомендую использовать ComponentMessageNotificationListener. mulesoft.org/documentation/display/current/ - person Julio Cejas; 23.11.2014

Для мьюла версии 3.8+ и выше #[flow.name] не работает.

Используйте выражение #[mule:context.serviceName] в регистраторе или компоненте, чтобы извлечь имя потока.

person star    schedule 19.07.2017

Я знаю, что этот пост устарел, но я пытался найти способ сделать это в MEL для обработки сообщений электронной почты об ошибках.

В качестве имени потока вы можете использовать #[exception.event.flowConstruct.name] для неисправного обработчика сообщений, вы можете использовать #[exception.failingMessageProcessor].

Оба они работают в MEL без необходимости использования flowVar.

Обратите внимание, однако, что неисправный процессор не всегда возвращает значение, а возвращается с нулевым значением, я не уверен, почему.

person a.cayzer    schedule 27.02.2017

Два способа активировать это (из текущего имени потока)

Первый это -

<logger message="Current flowName: #[flow.name]" level="INFO" doc:name="Logger"/>

а второй -

<logger message="Current flowName: #[context:serviceName]" level="INFO" doc:name="Logger"/>
person Sanjeet Pandey    schedule 25.05.2018