2

我正在尝试在 Mule 中实现异常处理。

我使用回滚异常策略重新尝试消息,然后将其视为错误消息。

我有如下异常策略。

<rollback-exception-strategy maxRedeliveryAttempts="3" doc:name="Rollback Exception Strategy">
        <logger message="message1 #[exception]" level="INFO" doc:name="Logger"/>
        <file:outbound-endpoint path="C:\\MuleSamples\backout" responseTimeout="10000" doc:name="File"/>
        <on-redelivery-attempts-exceeded doc:name="Redelivery exhausted">
            <logger message="#[message.exceptionPayload]" level="INFO" doc:name="Logger"/>
            <file:outbound-endpoint path="C:\\MuleSamples\backout" outputPattern="backoutmsg.xml" responseTimeout="10000" doc:name="File"/>
        </on-redelivery-attempts-exceeded>
</rollback-exception-strategy>

正如我所料,这不起作用,即使我将 RedeliveryAttempts 配置为 3,流也不会重新传递消息。它只是处理一次。

我不明白我在这里缺少什么。

我有 WMQ 入站端点并使用了 WMQ_transaction。

任何帮助将不胜感激。

4

2 回答 2

1

Mule关于回滚异常策略的文档说:

当您的流使用以下两种传输类型之一时,Mule 会尝试重新传递消息:事务性或可靠

在 Mule 中,VM、JDBC、JMS 传输是事务性的,而 JMS、FTP、文件、IMAP 是可靠的传输。

因此,如果您的流程具有上述入站端点之一,则回滚异常策略将重试。

于 2015-10-29T14:10:01.257 回答
0

请记住,回滚异常策略机制仅适用于IllegalStateException。对于所有其他例外情况,您必须定义不同的策略。

Java 的 IllegalStateException 的 Javadocs 声明它:

表示方法已在非法或不适当的时间被调用。换言之,Java 环境或 Java 应用程序未处于请求操作的适当状态。

于 2014-03-06T05:13:45.767 回答