我使用了“捕获异常策略”来捕获流中出现的任何异常。现在我想打印异常之前的有效负载。有没有办法在骡子中实现这一目标?
答案 0 :(得分:0)
将有效负载存储在会话变量中,并在catch异常策略中打印它。
答案 1 :(得分:0)
您可以使用message.getExceptionPayload()
从MuleMessage获取异常Payload,但是,当发生异常时,将消耗有效负载,并且为了获取异常之前的原始有效负载,您将不得不求助于存储在<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。
答案 2 :(得分:0)
你可以通过拖动“捕捉异常障碍”来尝试如下
<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>
希望这会帮助你!