当前位置: 首页 > news >正文

Seata集成Nacos加Mysql存储

1、进入seata官网

seata历史版本下载地址

提示:找到对应的版本下载二进制文件即可

2.配置Nacos作为注册中心

一、进入seata\conf目录

提示:可以参考文件application.example.yml来配置我们需要的

二、我最后的yml配置,我采用的Nacos,其中的Nacos变量我是存在了电脑系统变量的
server:port: 7091
spring:application:name: seata-server
logging:config: classpath:logback-spring.xmlfile:path: ${log.home:${user.home}/logs/seata}extend:logstash-appender:destination: 127.0.0.1:4560kafka-appender:bootstrap-servers: 127.0.0.1:9092topic: logback_to_logstash
console:user:username: seatapassword: seata
seata:config:# support: nacos 、 consul 、 apollo 、 zk  、 etcd3type: nacosnacos:server-addr: ${NACOS_SERVER}namespace: ${NACOS_NAMESPACE}group: ${NACOS_GROUP}data-id: ${spring.application.name}.propertiesregistry:type: nacosnacos:application: ${spring.application.name}server-addr: ${NACOS_SERVER}group: ${NACOS_GROUP}namespace: ${NACOS_NAMESPACE}cluster: XYsecurity:secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017tokenValidityInMilliseconds: 1800000ignore:urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.jpeg,/**/*.ico,/api/v1/auth/login,/version.json,/health,/error
三、其中需要注意的是一个cluster这个参数,后面的客服端会用到

3.配置数据库的信息到Nacos的配置中心,

一、这里的文件取名和你在yml配置Config的data-id相关:seata-server.properties
store.mode=db
#-----db-----
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://localhost:3306/seata?useUnicode=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
store.db.user=root
store.db.password=123456
# 数据库初始连接数
store.db.minConn=1
# 数据库最大连接数
store.db.maxConn=20
# 获取连接时最大等待时间 默认5000,单位毫秒
store.db.maxWait=5000
# 全局事务表名 默认global_table
store.db.globalTable=global_table
# 分支事务表名 默认branch_table
store.db.branchTable=branch_table
# 全局锁表名 默认lock_table
store.db.lockTable=lock_table
# 查询全局事务一次的最大条数 默认100
store.db.queryLimit=100# undo保留天数 默认7天,log_status=1(附录3)和未正常清理的undo
server.undo.logSaveDays=7
# undo清理线程间隔时间 默认86400000,单位毫秒
server.undo.logDeletePeriod=86400000
# 二阶段提交重试超时时长 单位ms,s,m,h,d,对应毫秒,秒,分,小时,天,默认毫秒。默认值-1表示无限重试
# 公式: timeout>=now-globalTransactionBeginTime,true表示超时则不再重试
# 注: 达到超时时间后将不会做任何重试,有数据不一致风险,除非业务自行可校准数据,否者慎用
server.maxCommitRetryTimeout=-1
# 二阶段回滚重试超时时长
server.maxRollbackRetryTimeout=-1
# 二阶段提交未完成状态全局事务重试提交线程间隔时间 默认1000,单位毫秒
server.recovery.committingRetryPeriod=1000
# 二阶段异步提交状态重试提交线程间隔时间 默认1000,单位毫秒
server.recovery.asynCommittingRetryPeriod=1000
# 二阶段回滚状态重试回滚线程间隔时间  默认1000,单位毫秒
server.recovery.rollbackingRetryPeriod=1000
# 超时状态检测重试线程间隔时间 默认1000,单位毫秒,检测出超时将全局事务置入回滚会话管理器
server.recovery.timeoutRetryPeriod=1000
二、建立事务数据库,文件在seata\script\server\db

 4.运行Seata服务seata\bin\seata-server.bat,这里是在windos使用的,所以选的bat

提示:你使用mode为db,可能启动会报错一闪而过,大概是你没有对应的驱动,我在使用mysql的时候就遇到了,把对应的驱动jar添加到lib下面,比如我的就是

运行Seata
运行Seata

提示:运行成功可以看到you can visit seata console UI on http://127.0.0.1:7091.字样,

一、然后我我们可以在Nacos服务中看看有没有注册成功

二、登录管理界面

提示:密码和账号都是seata,也就是你yml配置的console的user属性

5.客服端使用配置

一、添加yml配置加入事务组
seata:enabled: trueenable-auto-data-source-proxy: falsetx-service-group: seata-xyapplication-id: ${spring.application.name}service:vgroup-mapping:seata-xy: XYregistry:type: nacosnacos:application: seata-serverserver-addr: ${NACOS_SERVER}namespace: ${NACOS_NAMESPACE}group: ${NACOS_GROUP}
二、还需要在那个微服务数据库添加表undo_log
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for undo_log
-- ----------------------------
DROP TABLE IF EXISTS `undo_log`;
CREATE TABLE `undo_log`  (`id` bigint NOT NULL AUTO_INCREMENT,`branch_id` bigint NOT NULL,`xid` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,`context` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,`rollback_info` longblob NOT NULL,`log_status` int NOT NULL,`log_created` datetime NOT NULL,`log_modified` datetime NOT NULL,`ext` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE,UNIQUE INDEX `ux_undo_log`(`xid` ASC, `branch_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic;SET FOREIGN_KEY_CHECKS = 1;
三、如果回滚失败,只回滚了一个需要 Seata 正确代理数据源
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.seata.rm.datasource.DataSourceProxy;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;import javax.sql.DataSource;@Configuration
public class DataSourceConfig {@Bean@ConfigurationProperties(prefix = "spring.datasource")public DataSource dataSource() {return new DruidDataSource();}// 确保 Seata 数据源代理生效@Primary@Bean("dataSourceProxy")public DataSourceProxy dataSourceProxy(DataSource dataSource) {return new DataSourceProxy(dataSource);}
}

6.测试:

http://www.dtcms.com/a/573032.html

相关文章:

  • C#:OpenCvSharp 实现图像处理的技术指南
  • KingbaseES:从兼容到超越,详解超越MySQL的权限隔离与安全增强
  • 超详细Windows系统MySQL 安装教程
  • LeetCode 刷题【145. 二叉树的后序遍历】
  • 快速精通Zynq芯片与嵌入式系统实战
  • 【设计题】秒杀场景中的库存扣减并发控制
  • cpp_STL简介(了解)
  • 视觉Transformer实战——Vision Transformer(ViT)详解与实现
  • 个性化网站设计网站搜索系统
  • 机器视觉---光学变焦与数字变焦
  • 三种方式修改AI生成的流程图,实现无损放大
  • Spring AI使用知识库增强对话功能
  • 在类中强制规定编码约定:Python高级开发指南
  • 《GoF 23+1:设计模式的正确打开方式,清晰分组+巧妙记忆》
  • Java基础(十五):注解(Annotation)详解
  • 离散制造与流程制造 MES 应用核心差异对比表
  • 实战代码解析:京东获得 JD 商品详情 API (item_get_pro) 返回值说明
  • Agent 设计与上下文工程- 02 Workflow 设计模式(上)
  • UE安卓环境搭建
  • 【代码随想录算法训练营——Day59】图论——47.参加科学大会、94.城市间货物运输I
  • 做网站推广前途某互联网公司开发官网的首页
  • 网站未收录wordpress设置假阅读量
  • 将大规模shp白模贴图转3dtiles倾斜摄影,并可单体化拾取建筑
  • CMP7(类Cloudera CMP 7 404版华为Kunpeng)用开源软件Label Studio做数据标注
  • Go、DevOps运维开发实战(视频教程)
  • 25.Spring Boot 启动流程深度解析:从run()到自动配置
  • Spring Boot 实现多语言国际化拦截器
  • 神经网络—— 人工神经网络导论
  • 实时云渲染平台 LarkXR:2D/3D 应用云推流的高效解决方案
  • 厦门市建设局网站摇号如何自己搭建一个企业网站