JTA事务的问题

来源:4-9 JTA多数据源事务实例

qq_改成什么名字呢_0

2019-06-20

jms章节 不是说…消息发送时 自动创建session级别事务的吗???
怎么这次 又加上@Trancsation事务,才能访问了???

因为JTA这么规定的,所以才要加上吗?

图片描述

写回答

1回答

大漠风

2019-06-24

使用Spring进行事务管理,需要注意有两个层次的事务管理,一个是spring框架层次,一个是数据源层次。在不同的情况下,可能配置方式会不太一样,甚至是在同样的场景,只是版本不一样,也有可能有一些配置的差异。

以只有JMS为例,如果只使用JMS一个数据源,通过设置了jms的配置默认开启事务,那么在通过JMS的session进行读写的时候,会开启事务,但是,这又需要一个事务的上下文,也就是spring的事务管理的上下文,去运行。有些情况下这个事务上下文是自动创建的,比如我们通过`JMSListener`消费消息的时候,但有时候又需要加上事务的标签,比如用JmsTemplate发送消息的时候。

这个又跟不同的版本或着运行环境有关系,所以可能会出现有时候不加Transactional标签,也默认在事务里面执行。

但是在有多个数据源的情况下,就会更加复杂。如果默认使用spring的事务管理,不做任何配置,spring框架会通过它的事务同步实现事务管理,当然,他要求对每个数据源的操作也都是在事务内运行。如果使用了JTA的事务管理,更需要显式的告诉他要运行在事务上下文中,甚至有时候还需要配置。


0
0

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

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

1149 学习 · 153 问题

查看课程