gpt4 book ai didi

java - JMS 本地事务与 TransactionManager

转载 作者:行者123 更新时间:2023-12-01 10:28:02 29 4
gpt4 key购买 nike

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

场景1:

使用来自 Jms 代理的消息,处理消息并在处理成功后提交事务,否则回滚。

场景 2:

我想将消息从一个代理代理到另一个代理,但我不想使用 XA 事务,因为它的速度很慢。因此,我们的想法是为我正在消费的代理启动一个事务,然后在该事务中为我正在生成的代理启动第二个事务,然后连续提交这两个事务。让我们忽略这种情况下可以减轻的重复风险问题

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

最佳答案

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

手动管理单独的事务会造成漏洞,例如服务器 A 事务已提交,但服务器 B 由于任意数量的错误条件(网络、应用程序故障等)而无法提交。在很多类似的场景中,事务管理器可以缓解这些问题。

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

关于java - JMS 本地事务与 TransactionManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35254807/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com