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
中谢谢!
答案 0 :(得分:1)
核心问题如下:组件抛出的所有异常都包含在org.mule.component.ComponentException
中。
default-exception-strategy
过去但现在无法将此异常解包到其根本原因,这意味着exception-pattern
将应用于org.mule.component.ComponentException
。
IMO这是骡子中的一个错误。我打开了MULE-6218。请投票/观看。
与此同时,您可以创建一个自定义异常策略,在处理它们之前解开Mule异常。为此,请使用:ExceptionHelper.getRootException(ex)