上一篇内容:seata分布式事务(三)安装seata服务器
本文主要演示以刚开始创建的项目为例,集成Seata进行分布式事务处理。
完整代码示例:https://gitee.com/zhaojiyuan/seatademo
給Pa和Pb项目集成seata分布式事务框架
-
给Pa和pb模块都添加seata以下的依赖
<dependency> <groupId>io.seata</groupId> <artifactId>seata-spring-boot-starter</artifactId> <version>1.4.1</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-seata</artifactId> <version>2.2.1.RELEASE</version> <exclusions> <exclusion> <groupId>io.seata</groupId> <artifactId>seata-spring-boot-starter</artifactId> </exclusion> </exclusions> </dependency>
-
创建undo_log表
从源码包中找到seata-1.4.1\script\client\at\db文件夹,根据自己数据库类型选择要执行的文件,创建undo_log表。
源码包下载地址:Source code(zip)
-
在配置文件中添加以下配置,带有注释的需要根据自己的情况修改
seata: enabled: true application-id: applicationName tx-service-group: my_test_tx_group enable-auto-data-source-proxy: true data-source-proxy-mode: AT service: vgroup-mapping: my_test_tx_group: default grouplist: default: 192.168.0.199:8091 #seata服务器对应的ip以及端口 enable-degrade: false disable-global-transaction: false registry: type: nacos nacos: application: seata-server server-addr: www.zhaojiyuan.com:8848 #nacos的ip或者域名以及端口 group : SEATA_GROUP namespace: 7a4cb2ba-9f0d-4add-b953-76c4572b9144 #自己创建seata_dev的命名空间ID username: zhaojiyuan #nacos用户名 password: y21... #nacos密码 config: type: nacos nacos: server-addr: www.zhaojiyuan.com:8848 #nacos的ip或者域名以及端口 group: SEATA_GROUP namespace: 7a4cb2ba-9f0d-4add-b953-76c4572b9144 #自己创建seata_dev的命名空间ID username: zhaojiyuan #nacos用户名 password: y21... #nacos密码
-
添加注解
在需要添加全局事务的service方法上添加@GlobalTransactional注解
至此,seata分布式服务的hello word已全局结束,然后测试是否可以试用
测试
测试抛异常是否可以全部回滚
-
再paTest方法中手动抛出一样,数据全部回滚,测试通过
修改代码
前台调用的日志
查看数据库,一条数据都没有
测试不发生异常时候数据全部提交
-
测试当代码没有异常时候,数据是否可以正常提交
修改代码
前台调用
查看数据库,两条数据都已插入到数据库