我正在尝试在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。
非常感谢任何帮助。
答案 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应用程序未处于所请求操作的适当状态。