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

Seata安装使用

seata版本seata-server-0.9.0

修改seata目录文件夹conf文件registry.conf,这里使用nacos配置方式

registry {type = "nacos"nacos {serverAddr = "localhost"namespace = "public"cluster = "default"}
}config {type = "nacos"nacos {serverAddr = "localhost"namespace = "public"cluster = "default"}
}

然后再修改文件nacos-config.txt

transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.thread-factory.boss-thread-prefix=NettyBoss
transport.thread-factory.worker-thread-prefix=NettyServerNIOWorker
transport.thread-factory.server-executor-thread-prefix=NettyServerBizHandler
transport.thread-factory.share-boss-worker=false
transport.thread-factory.client-selector-thread-prefix=NettyClientSelector
transport.thread-factory.client-selector-thread-size=1
transport.thread-factory.client-worker-thread-prefix=NettyClientWorkerThread
transport.thread-factory.boss-thread-size=1
transport.thread-factory.worker-thread-size=8
transport.shutdown.wait=3
service.vgroup_mapping.product-service=default
service.vgroup_mapping.order-service=default
service.enableDegrade=false
service.disable=false
service.max.commit.retry.timeout=-1
service.max.rollback.retry.timeout=-1
client.async.commit.buffer.limit=10000
client.lock.retry.internal=10
client.lock.retry.times=30
client.lock.retry.policy.branch-rollback-on-conflict=true
client.table.meta.check.enable=true
client.report.retry.count=5
client.tm.commit.retry.count=1
client.tm.rollback.retry.count=1
store.mode=file
store.file.dir=file_store/data
store.file.max-branch-session-size=16384
store.file.max-global-session-size=512
store.file.file-write-buffer-cache-size=16384
store.file.flush-disk-mode=async
store.file.session.reload.read_size=100
store.db.datasource=dbcp
store.db.db-type=mysql
store.db.driver-class-name=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true
store.db.user=mysql
store.db.password=mysql
store.db.min-conn=1
store.db.max-conn=3
store.db.global.table=global_table
store.db.branch.table=branch_table
store.db.query-limit=100
store.db.lock-table=lock_table
recovery.committing-retry-period=1000
recovery.asyn-committing-retry-period=1000
recovery.rollbacking-retry-period=1000
recovery.timeout-retry-period=1000
transaction.undo.data.validation=true
transaction.undo.log.serialization=jackson
transaction.undo.log.save.days=7
transaction.undo.log.delete.period=86400000
transaction.undo.log.table=undo_log
transport.serialization=seata
transport.compressor=none
metrics.enabled=false
metrics.registry-type=compact
metrics.exporter-list=prometheus
metrics.exporter-prometheus-port=9898
support.spring.datasource.autoproxy=false

主要修改

service.vgroup_mapping.product-service=default
service.vgroup_mapping.order-service=default

对应自己的项目配置文件bootstrap.yml中的

tx-service-group: order-service

修改完成后进入conf目录下执行命令初始化

cd conf
nacos-config.sh 127 .0.0.1
这时nacos控制台通过能看到相关配置列表
在mysql中新建一张表( undo_log)记录事务日志
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,
`ext` VARCHAR(100) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`)
) ENGINE = INNODB
AUTO_INCREMENT = 1
DEFAULT CHARSET = utf8;

启动seata服务

cd bin
seata-server.bat -p 9000 -m file

引入相关依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
Seata 是通过代理数据源实现事务分支的,所以需要配置 io.seata.rm.datasource.DataSourceProxy
Bean ,且是 @Primary 默认的数据源,否则事务不会回滚,无法实现分布式事务
@Configuration
public class DataSourceProxyConfig {@Bean@ConfigurationProperties(prefix = "spring.datasource")public DruidDataSource druidDataSource() {return new DruidDataSource();}@Primary@Beanpublic DataSourceProxy dataSource(DruidDataSource druidDataSource) {return new DataSourceProxy(druidDataSource);}
}

复制registry.conf文件到项目resources

新建bootstrap.yml
spring:application:name: service-productcloud:nacos:config:server-addr: localhost:8848 # nacos的服务端地址namespace: publicgroup: SEATA_GROUPalibaba:seata:tx-service-group: product-service
#        tx-service-group: ${spring.application.name}
#        file-extension: yaml
#        shared-dataids: all-service.yaml # 配置要引入的配置
#        refreshable-dataids: all-service.yaml # 配置要实现动态配置刷新的配置
##        namespace: 6e19364e-f0cc-455c-9102-5a10ce18a3bf  # 切换空间
#  profiles:
#    active: dev #环境标识  test  开发、测试环境切换

然后在远程调用方法上加上 

@GlobalTransactional//全局事务控制

默认事务提交模式为AT

相关文章:

  • 微调 LLaMA 2:定制大型语言模型的分步指南
  • [C语言]猜数字游戏
  • 10 基于Gazebo和Rviz实现导航仿真,包括SLAM建图,地图服务,机器人定位,路径规划
  • 什么是静态住宅ip,跨境电商为什么要用静态住宅ip
  • 私有云与虚拟化攻防2(OpenStack渗透场景,大部分云平台都是基于此进行二次开发)
  • USB 网卡——RNDIS 介绍
  • 生物化学笔记:神经生物学概论04 视觉通路简介视网膜视网膜神经细胞大小神经节细胞(视错觉)
  • 【GPU 微架构技术】Pending Request Table(PRT)技术详解
  • AI Agent开源技术栈
  • 4.2.4 MYSQL的缓存策略
  • 凯撒密码算法的实现
  • 【LLM】Qwen3模型训练和推理
  • 【论文_序列转换模型架构_20230802v7】Attention Is All You Need 【Transformer】
  • 想做博闻强记的自己
  • 《云原生》核心内容梳理和分阶段学习计划
  • 软件设计师-软考知识复习(1)
  • 【嘉立创EDA】如何找到曲线和直线的交点,或找到弧线和直线的交点
  • jspm老年体检信息管理系统(源码+lw+部署文档+讲解),源码可白嫖!
  • JavaScript中 说说你对闭包的理解?闭包使用场景?
  • 算法每日一题 | 入门-顺序结构-A+B Problem
  • 《探秘海昏侯国》数字沉浸特展亮相首届江西文化旅游产业博览交易会
  • 前行中的“模速空间”:要攻克核心技术,也要成为年轻人创业首选地
  • 启程回家!神十九轨道舱与返回舱成功分离
  • 厚重与潮流交织,淮安展现“运河之都”全新城市想象
  • 为何未来的福利国家必须绿色且公平
  • 酒店就“保洁员调包住客港币”致歉,称希望尽早达成解决方案