【发布时间】:2015-12-08 18:34:47
【问题描述】:
我使用了“捕获异常策略”来捕获流程中出现的任何异常。现在我想在引发异常之前打印有效负载。有没有办法在 mule 中实现这一点?
【问题讨论】:
标签: exception-handling mule esb
我使用了“捕获异常策略”来捕获流程中出现的任何异常。现在我想在引发异常之前打印有效负载。有没有办法在 mule 中实现这一点?
【问题讨论】:
标签: exception-handling mule esb
将有效负载存储在会话变量中并在捕获异常策略中打印。
【讨论】:
您可以使用 message.getExceptionPayload() 从 MuleMessage 获取异常有效负载,但是,当发生异常时,有效负载会被消耗,并且为了获得异常之前的原始有效负载,您必须求助于有效负载的存储在像 <set-variable variableName="originalPayload" value="#[message.payload]" /> 这样的变量中,然后在发生异常后使用 MEL #[flowVars.originalPayload] 访问它(如果您在 JAVA 组件中,则使用 message.getInvocationProperty("originalPayload"))。
这里有一些链接供您参考,尽管这会更深入地了解该主题:
https://docs.mulesoft.com/mule-user-guide/v/3.6/exception-strategy-most-common-use-cases
Why is Mule payload getting lost in <catch-exception-strategy> for java.net.ConnectException
Mule ESB - Catch Exception Strategy block and Payload
您可以对变量使用会话作用域,这样它就不会丢失。
-Shanky G.
【讨论】:
您可以通过拖动“捕获异常策略”来尝试以下操作
<catch-exception-strategy doc:name="Catch_Exception_Strategy">
<logger message="Exception---" level="INFO" doc:name="Logger"/>
<set-variable variableName="SetException" value="#[exception.message]" doc:name="SetException"/>
<set-payload value="#[payload]" doc:name="FailedToEvaluateTheTask"/>
</catch-exception-strategy>
希望对你有所帮助!
【讨论】: