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