2014-11-22 111 views
0

我不確定,我們如何通過MEL提取流名稱和消息處理器名稱。例如,我有多個消息處理器。對於日誌記錄,我需要提取流名稱和消息處理器,以便我可以找出事務處理已經越過了這個特定的流程和消息處理器。有沒有什麼簡單的方法來找出答案。請指導我。請找到下面的截圖。在這裏,我需要提取 - 集有效載荷及其flowName(流1)如何使用MEL提取流名稱和MessageProcessor名稱 - MULE ESB

enter image description here

在此先感謝。

回答

1

你可以用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 
+0

謝謝!有效!!我可以提取flowName。有沒有一種方法來提取messageProcessor名稱。由好奇,我已經嘗試像thz#[flow.processor]和#[flow.messageProcessor],但它返回null.Any想法? – star 2014-11-23 03:55:22

+0

如果您想知道處理器消息正在執行的位置,我建議使用ComponentMessageNotificationListener。 http://www.mulesoft.org/documentation/display/current/Mule+Server+Notifications – 2014-11-23 15:54:41

2

我知道這個職位是舊的,但我一直試圖找到一種方法來進行錯誤處理做到這一點的MEL電子郵件。

對於流程名稱,您可以使用#[exception.event.flowConstruct.name] 作爲失敗的消息處理器,您可以使用#[exception.failingMessageProcessor]

這兩種工作都在MEL中,無需使用flowVar。

但請注意,失敗的處理器並不總是會返回一個值,但會返回null,我不知道爲什麼。

+0

感謝您的更新。 – star 2017-02-27 23:17:18

0

對於騾3.8+版本以上#[flow.name]不起作用。

使用#[mule:context.serviceName]表達式在記錄器或組件中提取流程名稱