JMS独立MQ提供程序和分布式事务

时间:2013-09-27 21:28:17

标签: java-ee transactions jms message-driven-bean

我在网络上有一个独立的MQ提供程序,它有一个队列。我还有多个带有MDB的Java EE服务器,它们使用来自该队列的消息。所以,我被迫用XATransaction建立连接工厂。

所以,我的问题是:

在MDB中,我应该使用CMT(JTA),因为它隐藏了所有复杂的分布式事务吗?

我有旧的MDB,它明确地创建了一个用户事务,如何使我的显式声明的事务与jms扩展事务一起加入?

1 个答案:

答案 0 :(得分:0)

您不会因为访问远程队列而被迫使用XA事务。

如果您的MDB在多个交易资源上执行了其他操作,并且您希望提交所有工作单元或不执行任何操作,则必须使用XA事务(这适用)本地和远程资源)。


至于你的第一个问题:你应该使用CMT,因为它更容易,而且BMT总是充当事务障碍:全局事务永远不会使用BMT传播到EJB。

至于你的第二个问题:我不知道有这样做的选择。我建议将其转换为CMT MDB。

相关:Why do EJB beans with bean-managed transactions act as a “transacation barrier”