JeecgBoot 与分布式事务 Seata v1.7.0 集成实战

B站影视 2024-11-21 02:48 2

摘要:# 数据存储方式,db代表数据库store.mode=dbstore.db.datasource=druidstore.db.dbType=mysqlstore.db.driverClassName=com.mysql.cj.jdbc.Driverstore.

jeecg_order(订单数据库)jeecg_account(账户数据库)jeecg_product(商品数据库)seata(seata数据库)

以上数据库脚本已存放至 jeecg-cloud-test-seata 示例中,文件位置如下图所示

本次实践的 seata 版本为 v1.7.0,下载地址 https://seata.apache.org/zh-cn/unversioned/download/seata-server

安装服务端 下载下来进行解压,目录结构如下:

进入 bin 目录启动 seata,seata 默认端口是 8091

window 下运行 seata-server.bat linux 下运行 seata-server.sh

修改 seata 服务端的 yml 配置

启动 seata,如下图 输入如下信息后表示启动成功

微服务模块添加依赖,具体参考示例代码

org.jeecgframework.bootjeecg-boot-starter-cloud3.1.0org.jeecgframework.bootjeecg-boot-starter-seata3.1.0

微服务模块添加配置,具体参考示例代码

seata:enable-auto-data-source-proxy: falseservice:grouplist:default: 127.0.0.1:8091vgroup-mapping:springboot-seata-group: default# seata 事务组编号 用于TC集群名tx-service-group: springboot-seata-group

启动测试 依次启动

jeecg-cloud-test-seata-order(下单服务)

jeecg-cloud-test-seata-product(库存服务)

jeecg-cloud-test-seata-account(账户服务)

启动完成如下图 浏览器输入 http://localhost:5001

即可进行测试,如下图所示

测试正常下参数见截图

测试余额不足,测试库存不足,然后观察数据库订单表插入数据是否回滚

注:本示例不通过网关所以需要排除认证权限 ShiroConfig.java 添加如下代码

//测试模块排除filterChainDefinitionMap.put("/test/seata/**", "anon");

可使用 nacos 作为 seata 的配置中心 新建 seataServer.properties 配置文件内容如下

# 数据存储方式,db代表数据库store.mode=dbstore.db.datasource=druidstore.db.dbType=mysqlstore.db.driverClassName=com.mysql.cj.jdbc.Driverstore.db.url=jdbc:mysql://localhost:3300/seata?useUnicode=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghaistore.db.user=rootstore.db.password=rootstore.db.minConn=5store.db.maxConn=30store.db.globalTable=global_tablestore.db.branchTable=branch_tablestore.db.queryLimit=100store.db.lockTable=lock_tablestore.db.maxWait=5000# 事务、日志等配置server.recovery.committingRetryPeriod=1000server.recovery.asynCommittingRetryPeriod=1000server.recovery.rollbackingRetryPeriod=1000server.recovery.timeoutRetryPeriod=1000server.maxCommitRetryTimeout=-1server.maxRollbackRetryTimeout=-1server.rollbackRetryTimeoutUnlockEnable=falseserver.undo.logSaveDays=7server.undo.logDeletePeriod=86400000# 客户端与服务端传输方式transport.serialization=seatatransport.compressor=none# 关闭metrics功能,提高性能metrics.enabled=falsemetrics.registryType=compactmetrics.exporterList=prometheusmetrics.exporterPrometheusPort=9898

来源:津津聊教育

相关推荐