好久没整活了,确实没时间,也没学习啊。简单记录一下springcloud中如何使用seata实现分布式事务。
seata下载地址:https://github.com/seata/seata/releases/tag/v1.4.2

开始进行准备配置工作。
nacos命名空间名为seata 命名空间ID为seata_namespace_001的,然后保存即可

seata解压后,去到seata/seata-server-1.4.2/conf目录,修改registry.conf文件,其他的没用我给删除了,这里填写nacos配置信息,命名空间填写“seata_namespace_001”

然后修改file.conf文件,这里主要填写seata链接的数据库信息

然后找到刚才下载的seata源码里面的config.txt,将该文件复制到seata的根目录下面


主要修改点如下

在下载的Seata源码的seata-1.4.2/script/config-center/nacos目录下找到nacos-config.sh文件

复制到seata根目录下

鼠标右键,执行git bash命令
sh nacos-config.sh -h 127.0.0.1 -p 8848 -g SEATA_GROUP -t seata_namespace_001 -u nacos -w nacos
执行成功后如下,nacos里面可以显示这些信息
数据库里面创建数据库,数据库脚本seata-1.4.2/script/server/db目录

启动seata服务:seata-server.bat -p 8091 -h 127.0.0.1 -m db
项目整合seata,要整合的服务数据库里面创建该表信息
CREATE TABLE IF NOT EXISTS `undo_log`
(
`branch_id` BIGINT NOT NULL COMMENT 'branch transaction id',
`xid` VARCHAR(128) NOT NULL COMMENT 'global transaction id',
`context` VARCHAR(128) NOT NULL COMMENT 'undo_log context,such as serialization',
`rollback_info` LONGBLOB NOT NULL COMMENT 'rollback info',
`log_status` INT(11) NOT NULL COMMENT '0:normal status,1:defense status',
`log_created` DATETIME(6) NOT NULL COMMENT 'create datetime',
`log_modified` DATETIME(6) NOT NULL COMMENT 'modify datetime',
UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1
DEFAULT CHARSET = utf8 COMMENT ='AT transaction mode undo table';
服务里面都添加该依赖
com.alibaba.cloud
spring-cloud-starter-alibaba-seata
我这里有个user服务,point服务
user服务配置文件新增
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
alibaba:
seata:
tx-service-group: server-user-tx_group
seata:
application-id: user
service:
vgroup-mapping:
server-product-tx_group: default
registry:
nacos:
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
group: SEATA_GROUP
namespace: seata_namespace_001
application: seata-server
config:
type: nacos
nacos:
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
group: SEATA_GROUP
namespace: seata_namespace_001
point服务配置文件
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
alibaba:
seata:
tx-service-group: server-point-tx_group
seata:
application-id: point
service:
vgroup-mapping:
server-order-tx_group: default
registry:
nacos:
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
group: SEATA_GROUP
namespace: seata_namespace_001
application: seata-server
config:
type: nacos
nacos:
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
group: SEATA_GROUP
namespace: seata_namespace_001
方法添加注解@GlobalTransactional

控制台打印日志,有提示回滚信息Rollbacked。查看数据库,没有存入任何数据

完事了