如何用骡子4拦截所有流量

时间:2018-05-02 14:34:47

标签: mule mule-esb

是否可以使用 Mule 4 拦截所有流量?看起来MuleSoft已经从Mule 4中删除了自定义拦截器,AbstractEnvelopeInterceptor等。

我想添加一些审核记录程序,例如"Entering XYZ flow""Exiting XYZ flow"。我没有在每个流程中添加这些记录器,而是在考虑是否可以使用一些常用代码来完成。

2 个答案:

答案 0 :(得分:0)

拦截器在Mule 4中已弃用。有关详细信息,请参见migrating core components上的文档。您可以改用自定义策略。

答案 1 :(得分:-2)

在Mule 4中,要记录变量,可以采用以下方法:

<logger level="INFO" doc:name="My Var" message="#[vars.myVar]" category="values"/>

#[]内的表达式是一个使用DataWeave表达式语言的表达式。

要创建更复杂的表达式来记录变量,可以使用函数write():

<logger level="INFO" doc:name="My Var" message="#[' myVar = $(write(vars.myVar))']" category="values"/>

这将提供如下所示的日志记录输出:

org.mule.runtime.core.internal.processor.LoggerMessageProcessor: myVar = "the value" as String {class: "java.lang.String";, encoding: "UTF-8", mimeType: "application/java", raw: "the value" as String {class: "java.lang.String";}}

请注意以下事项: write函数打印变量myVar及其元数据(编码,mime类型,ray vaule,Java类)

#[]内的表达式是一个String。当我们想要评估String中的表达式时,我们使用$()。例如,这个字符串:&#39; $(1 + 1)&#39;评估为&#39; 2&#39;