1

标签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.

这是在骡 CE 3.2.1

谢谢!

4

1 回答 1

1

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

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

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

同时,您可以创建自定义异常策略,在处理 Mule 异常之前对其进行解包。为此,请使用:ExceptionHelper.getRootException(ex)

于 2012-05-08T22:36:47.293 回答