接:sptingboot 整合 seata1.6.1 (AT模式)
简介 官方简介
在 Seata 定义的分布式事务框架内,利用事务资源(数据库、消息服务等)对 XA 协议的支持,以 XA 协议的机制来管理分支事务的一种 事务模式
-
执行阶段:
- 可回滚:业务 SQL 操作放在 XA 分支中进行,由资源对 XA 协议的支持来保证 可回滚
- 持久化:XA 分支完成后,执行 XA prepare,同样,由资源对 XA 协议的支持来保证 持久化(即,之后任何意外都不会造成无法回滚的情况)
-
完成阶段:
-
分支提交:执行 XA 分支的 commit
-
分支回滚:执行 XA 分支的 rollback
实战
- sptingboot 整合 seata1.6.1 (AT模式)的前提下
- 修改common-db 数据源代理
@Primary //设置⾸选数据源对象
@Bean("dataSource")
public DataSourceProxyXA dataSource(DataSource druidDataSource) {
// return new DataSourceProxy(druidDataSource);
return new DataSourceProxyXA(druidDataSource);
}
- common-db 的.ymal配置
application-seata.yml
# staet----------------------------seata服务配置
seata:
# 切换XA模式
enable: true
data-source-proxy-mode: XA
enable-auto-data-source-proxy: true
config:
type: nacos
nacos:
server-addr: 127.0.0.1:8848
namespace: seata-server
group: SEATA_GROUP
username: nacos
password: nacos
registry:
type: nacos
nacos:
server-addr: 127.0.0.1:8848
namespace: seata-server
application: seata-server
group: SEATA_GROUP
username: nacos
password: nacos
service:
vgroup-mapping:
default_tx_group: default
disable-global-transaction: false
grouplist:
default: 127.0.0.1:8091
tx-service-group: default_tx_group
spring:
cloud:
alibaba:
seata:
tx-service-group: default_tx_group
logging:
level:
seata: debug
- 验证
库存为100,下单超过100即可触发分布式事务回滚。
http://localhost:8000/test1 正常下单,加积分,减库存。(每下1单数量10个,积分加10,库存-10)
http://localhost:8000/test2 异常下单,库存不足,回滚订单和积分。
-
http://localhost:8000/test1 正常下单,加积分,减库存。
-
http://localhost:8000/test2 异常下单,库存不足,回滚订单和积分。