回滚异常策略

时间:2013-09-17 21:03:36

标签: exception-handling mule mule-studio

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

我使用Rollback Exception Strategy重新尝试消息,然后将其作为错误输出消息。

我有以下的例外策略。

<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。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

回滚异常策略的Mule document说:

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

在Mule,VM,JDBC,JMS传输是事务性的,JMS,FTP,File,IMAP是可靠的传输。

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

答案 1 :(得分:0)

请记住,rollback-exception-strategy机制仅适用于 IllegalStateException 。对于所有其他例外,您必须定义不同的策略。

Javadocs for Java的IllegalStateException声明它:

表示在非法或不适当的时间调用了某个方法。换句话说,Java环境或Java应用程序未处于所请求操作的适当状态。