如何使用MEL-MULE ESB提取流名称和MessageProcessor名称

时间:2014-11-22 07:15:11

标签: mule mule-studio mule-el mule-component

我不确定,我们如何通过MEL提取流名称和消息处理器名称。例如,我有多个消息处理器。对于日志记录,我需要提取流名称和消息处理器,以便我可以发现事务已跨越此特定流及其消息处理器。有没有简单的方法可以找到答案。请指导我。请在下面找到截图。这里我需要提取 - 设置有效负载及其flowName(flow1)

enter image description here

提前致谢。

4 个答案:

答案 0 :(得分:2)

我知道这篇文章已经过时但我一直试图在MEL中找到一种方法来处理错误处理电子邮件。

对于流程名称,您可以使用#[exception.event.flowConstruct.name] 对于失败的消息处理器,您可以使用#[exception.failingMessageProcessor]

这两个都在MEL中工作,无需使用flowVar。

但请注意,失败的处理器并不总是返回值,但返回null,我不知道为什么。

答案 1 :(得分:2)

对于mule 3.8+版本以上#[flow.name]不能正常工作。

在记录器或组件中使用#[mule:context.serviceName]表达式来提取流的名称

答案 2 :(得分: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

答案 3 :(得分:0)

采取行动的两种方法(来自当前流程名称)

首先是 -

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

,第二个是 -

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