最大一次提交

来源:7-12 并发时的错误处理

慕勒3109879

2019-02-01

老师你好,有几个问题不太明白:
1、什么是最大努力一次提交,原理是什么?
2、TransactionAwareDataSourceProxy怎么就实现了最大一次提交 ?
3、在6-7:jms-db的演示中,可以使用链式事务吗?
4、链式事务和最大努力一次提交适合什么场景,,如何选择?

第一次系统而全面的来了解分布式事务,问题可能比较low,还望耐心解答。

写回答

1回答

大漠风

2019-02-06

最大努力一次提交,就是在一个事务管理里面提交所有的数据源的事务。一般是用数据库的事务管理器来进行管理,在数据库事务提交的时候,同时提交其他的数据源的事务。

TransactionAwareDataSourceProxy就是使用一种代理模式,当数据库的事务被提交的时候,也出发其他的事务。

jms-db可以使用链式事务,只要多个数据源,都有spring事务管理的实现,就都可以使用链式事务。

如果其中一个数据源的事务管理,没有基于spring的事务管理器,就不能使用链式事务,就得使用最大努力一次提交。

上面这些,其实跟spring的事物机制有关,因为要使用spring的事务管理机制来管理事务,就需要相应的数据源实现的spring事务接口,如很多MQ服务器如activeMQ等都有JMSTransactionManager的具体实现。如果没有,就不能使用spring标签、spring的事务相关配置等,直接实现事务管理,只能用代码方法自己控制事务。

1
3
慕勒3109879
回复
大漠风
我觉得可以出一套,带领大家读懂spring源码的,也可以出一套jvm的,应该会受欢迎
2019-02-11
共3条回复

分布式事务实践,从原理到实例,解决数据一致性

掌握分布式事务实现技术,是架构师必备技能。

1149 学习 · 153 问题

查看课程