捕获异常时,如何在Mule中保留有效负载?

时间:2015-12-03 09:18:33

标签: exception-handling mule esb

我使用了“捕获异常策略”来捕获流中出现的任何异常。现在我想打印异常之前的有效负载。有没有办法在骡子中实现这一目标?

3 个答案:

答案 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>

希望这会帮助你!