springcloud集成Seata AT 模式
创始人
2024-01-29 01:54:31
0

注意:
1.seata版本1.4.1
2.使用db配置,mysql
3.nacos版本2.2.3.RELEASE
4.spring-boot-starter-parent版本2.3.1.RELEASE
版本匹配很关键,否则报奇奇怪怪的错!!!!

seata库必要的表

-- -------------------------------- The script used when storeMode is 'db' --------------------------------
-- the table to store GlobalSession data
CREATE TABLE IF NOT EXISTS `global_table`
(`xid`                       VARCHAR(128) NOT NULL,`transaction_id`            BIGINT,`status`                    TINYINT      NOT NULL,`application_id`            VARCHAR(32),`transaction_service_group` VARCHAR(32),`transaction_name`          VARCHAR(128),`timeout`                   INT,`begin_time`                BIGINT,`application_data`          VARCHAR(2000),`gmt_create`                DATETIME,`gmt_modified`              DATETIME,PRIMARY KEY (`xid`),KEY `idx_gmt_modified_status` (`gmt_modified`, `status`),KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDBDEFAULT CHARSET = utf8;-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(`branch_id`         BIGINT       NOT NULL,`xid`               VARCHAR(128) NOT NULL,`transaction_id`    BIGINT,`resource_group_id` VARCHAR(32),`resource_id`       VARCHAR(256),`branch_type`       VARCHAR(8),`status`            TINYINT,`client_id`         VARCHAR(64),`application_data`  VARCHAR(2000),`gmt_create`        DATETIME(6),`gmt_modified`      DATETIME(6),PRIMARY KEY (`branch_id`),KEY `idx_xid` (`xid`)
) ENGINE = InnoDBDEFAULT CHARSET = utf8;-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(`row_key`        VARCHAR(128) NOT NULL,`xid`            VARCHAR(96),`transaction_id` BIGINT,`branch_id`      BIGINT       NOT NULL,`resource_id`    VARCHAR(256),`table_name`     VARCHAR(32),`pk`             VARCHAR(36),`gmt_create`     DATETIME,`gmt_modified`   DATETIME,PRIMARY KEY (`row_key`),KEY `idx_branch_id` (`branch_id`)
) ENGINE = InnoDBDEFAULT CHARSET = utf8;

业务系统库必要表(每个业务库里都要添加)

-- 注意此处0.7.0+ 增加字段 context
CREATE TABLE `undo_log` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`branch_id` bigint(20) NOT NULL,`xid` varchar(100) NOT NULL,`context` varchar(128) NOT NULL,`rollback_info` longblob NOT NULL,`log_status` int(11) NOT NULL,`log_created` datetime NOT NULL,`log_modified` datetime NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

seata

com.alibaba.cloudspring-cloud-alibaba-seata2.2.0.RELEASEio.seataseata-spring-boot-starter

io.seataseata-spring-boot-starter1.4.1

nacos

com.alibaba.cloudspring-cloud-starter-alibaba-nacos-config2.2.3.RELEASEcom.alibaba.cloudspring-cloud-starter-alibaba-nacos-discovery2.2.3.RELEASEorg.springframework.cloudspring-cloud-netflix-ribbon

下载必要的启动文件
https://github.com/seata/seata/releases
在这里插入图片描述
下载必要的nacos里seata配置文件
https://github.com/seata/seata/tree/1.4.1
在这里插入图片描述
配置好nacos命名空间后,自动加载seata配置
1.找到/script/config-center/nacos/nacos-config.sh
2.修改里面的mysql配置
在这里插入图片描述
3.在git bash里执行脚本(修改命名空间id,nacos账号,nacos密码)

sh nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t 5a3c7d6c-f497-4d68-a71a-2e5e3340b3ca -u username -w password

导入seata配置后效果图
在这里插入图片描述

服务yml配置(服务提供方和调用方配置一样)

seata:# 这里要特别注意和nacos中配置的要保持一致,建议配置成 ${spring.application.name}-tx-grouptx-service-group: my_test_tx_groupregistry:type: nacosnacos:# 配置所在命名空间ID,如未配置默认public空间server-addr: 127.0.0.1:8848namespace: d173bb29-9a7c-4a01-aedd-056c63440ba8group: SEATA_GROUPapplication: seata-serveruserName: nacospassword: nacosconfig:type: nacosnacos:server-addr: 127.0.0.1:8848namespace: d173bb29-9a7c-4a01-aedd-056c63440ba8group: SEATA_GROUPuserName: nacospassword: nacosservice:vgroup-mapping:my_test_tx_group: defaultdisable-global-transaction: falseclient:rm:report-success-enable: false

测试时记得在sevice层加@GlobalTransactional,仅调用方添加就行。
如果调用方没添加,被调用放添加,那么仅被调用方回滚。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...