Mule 异常模式对提交事务有效吗?

Mule 异常模式对提交事务有效吗?,mule,Mule,提交事务标记上的异常模式属性有效吗?也就是说,在默认的异常策略中,我可以让它工作 <commit-transaction exception-pattern="*"/> 但不是这个: <commit-transaction exception-pattern="some.specific.Exception"/> 以下是配置的相关片段: <mule ...> <jms:activemq-connector name="JMSConne

提交事务
标记上的
异常模式
属性有效吗?也就是说,在默认的异常策略中,我可以让它工作

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

如果使用
异常模式=“*”
,则不会重新传递JMS消息。但是,如果使用更具体的
异常模式
,则会重新传递消息。如果抛出的异常是
BusinessException
,我不希望重新传递消息

这是在Mule CE 3.2.1中


谢谢

核心问题如下:组件引发的所有异常都封装在
org.mule.component.ComponentException

default exception strategy
过去是,但现在无法将此异常展开为其根本原因,这意味着
异常模式
将应用于
org.mule.component.ComponentException

在我看来,这是骡子里的虫子。我已经打开了。请投赞成票/观看


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

核心问题是:组件引发的所有异常都封装在
org.mule.component.ComponentException

default exception strategy
过去是,但现在无法将此异常展开为其根本原因,这意味着
异常模式
将应用于
org.mule.component.ComponentException

在我看来,这是骡子里的虫子。我已经打开了。请投赞成票/观看



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

Mule版本?收到错误?@David:消息中现在有更多详细信息。旁注:您希望在ActiveMQ连接器上安装
specification=“1.1”
。此外,我假设您在
jms:inbound endpoint
内有
,否则不会启动任何事务。为了重现你的问题,我不得不加上这些。@David:奇怪。即使我没有在jms入站端点内开始事务,
也可以工作。另外,感谢您对
规范
属性.Mule版本的说明?收到错误?@David:消息中现在有更多详细信息。旁注:您希望在ActiveMQ连接器上安装
specification=“1.1”
。此外,我假设您在
jms:inbound endpoint
内有
,否则不会启动任何事务。为了重现你的问题,我不得不加上这些。@David:奇怪。即使我没有在jms入站端点内开始事务,
也可以工作。另外,感谢您关于<代码>规范属性的注意事项。如果异常是某种类型的,您能给出一个如何在自定义异常策略中“吞咽”异常(即考虑完成的处理)的例子吗?扩展抽象异常策略和重写ISROLBACK()来控制和模拟这种行为。再简单不过了。谢谢。当我扩展
AbstractExceptionStrategy
时,jms响应似乎有问题(入站jms端点具有请求-响应交换模式。我在最初的post-now修复中遗漏了这一点),jms响应可能不会发送给调用方!调用方似乎在等待响应10秒后超时…事务是否已提交?您对调用方使用什么代码?听起来是另一个问题。。。可能有新的问题吗?你能举一个例子,说明如何在一个自定义异常策略中“吞下”一个异常(即考虑完成的处理),如果异常是某种类型的?扩展ExistAcExtExc策略和重写ISROLLBACK()以控制模拟这个行为。谢谢。当我扩展
AbstractExceptionStrategy
时,jms响应似乎有问题(入站jms端点具有请求-响应交换模式。我在最初的post-now修复中遗漏了这一点),jms响应可能不会发送给调用方!调用方似乎在等待响应10秒后超时…事务是否已提交?您对调用方使用什么代码?听起来是另一个问题。。。也许是新问题?