繁体   English   中英

JMS本地事务与TransactionManager

[英]JMS Local transactions vs TransactionManager

我最近一直在研究Jms API,但不确定我是否了解本地与事务管理器之间的差异。

方案1:

使用来自Jms代理的消息,处理该消息,一旦处理成功,则提交事务,否则回滚。

方案2:

我想将消息从一个经纪人代理到另一个经纪人,但是由于其缓慢的特性,我不想使用XA事务。 因此,想法是为我正在使用的代理开始事务,然后在该事务中为我要生成的代理开始第二个事务,然后依次提交这两个事务。 让我们忽略这种情况下的重复风险问题,该问题可以缓解

使用JMS commit(),rollback()API(又称本地事务)与使用事务管理器(例如Spring的PlatformTransactionManager类)之间到底有什么区别? 在第二种情况下,是否需要交易管理器,为什么/不是?

事务管理器将确保跨事务的服务器将一起提交或回滚。

手动管理单独的事务会带来一些漏洞,例如服务器A提交的事务,但服务器B不能这样做是因为有许多错误情况(网络,应用程序故障等)。 在许多类似情况下,事务管理器可以缓解这些问题。

可能是您的应用程序是幂等的,可以处理多次看到相同的消息并正确处理它,或者可能存在可以纠正不良情况的流程问题,在这种情况下,您可能还可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM