在commit-transaction上做异常模式工作吗?

时间:2012-05-08 21:03:29

标签: mule

exception-pattern标记上的commit-transaction属性是否有效?也就是说,在默认的异常策略中,我可以使其工作,

<commit-transaction exception-pattern="*"/>

但不是这样:

<commit-transaction exception-pattern="some.specific.Exception"/>

以下是配置的相关摘要:

<mule ...>
    <jms:activemq-connector name="JMSConnector" brokerURL="${messaging.brokerURL}" />
    <flow name="aFlow">
        <jms:inbound-endpoint name="endpoint.Name" queue="${queue}"
                              exchange-pattern="request-response"
                              connector-ref="JMSConnector" />
        <component>
            <spring-object bean="ThrowsBusinessException" />
        </component>

        <default-exception-strategy>
            <commit-transaction exception-pattern="com.BusinessException" />
        </default-exception-strategy>
    </flow>
</mule>

如果我使用exception-pattern="*",则不会重新传递JMS消息。但是,如果我使用更具体的exception-pattern,则会重新传递邮件。如果抛出的异常是BusinessException,我不希望重新传递消息。

这是在Mule CE 3.2.1

谢谢!

1 个答案:

答案 0 :(得分:1)

核心问题如下:组件抛出的所有异常都包含在org.mule.component.ComponentException中。

default-exception-strategy过去但现在无法将此异常解包到其根本原因,这意味着exception-pattern将应用于org.mule.component.ComponentException

IMO这是骡子中的一个错误。我打开了MULE-6218。请投票/观看。

与此同时,您可以创建一个自定义异常策略,在处理它们之前解开Mule异常。为此,请使用:ExceptionHelper.getRootException(ex)