1.所需配置
1. 下载seata1.4.2
此处使用的V1.4.2,0.9版本以后基本没有版本区别
2、在下载的seata目录下新建config.txt(注意,和bin同级目录)
seata配置中心
注意第一句:lwf-system-group 这个名称是在项目中配置的事务分组名称,极易出差(我在此处被折磨半天)
service.vgroupMapping.lwf-system-group=default
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/ry-seata?useUnicode=true
store.db.user=root
store.db.password=password
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000
3、下载注册配置的工具文件
下载链接
windows 下载nacos-config.py linux 下载nacos-config.sh
下载后放到conf目录下,运行。windows需要python环境
如果nacos设置登录了信息的,需要修改。(如果不闲麻烦,也可以直接在nacos中一条一条的添加配置,注意,每一行就是一个配置,key=value形式)
运行成功后到nacos中可以看到配置相关信息。
相关配置注册成功,我遇到的是没有注册第一行,理论上在需要使用分布式事务的项目都应该有对应的这个配置,分别对应项目名称,当然也可以全部统一为一个事务组
service.vgroupMapping.lwf-system-group=default
没详细看为什么没有注册此配置,直接在nacos里面添加一条吧(注意分组要相同:SEATA_GROUP)
在项目配置文件中添加
# spring配置
spring:
datasource:
dynamic:
# 开启seata代理
seata: true
# seata配置
seata:
enabled: true
# Seata 应用编号,默认为 ${spring.application.name} 上面提到的极易出差的地方,lwf-system就对应此处的名称
application-id: ${spring.application.name}
# Seata 事务组编号,用于 TC 集群名
tx-service-group: ${spring.application.name}-group
# 关闭自动代理
enable-auto-data-source-proxy: false
# 服务配置项
service:
# 虚拟组和分组的映射
vgroup-mapping:
#注意此处需要修改跟项目名称一致,也就是上面的${spring.application.name}名称一致,否则会失败
lwf-system-group: default
config:
type: nacos
nacos:
serverAddr: 127.0.0.1:8848
group: SEATA_GROUP
namespace:
registry:
type: nacos
nacos:
application: seata-server
server-addr: 127.0.0.1:8848
namespace:
4、异常
no available service ‘’ found, please make sure registry config corre
no available service ‘default’ found, please make sure registry config corre
这两个都差不多,一个是找不到配置service.vgroupMapping.lwf-system-group对应的值,一个是找到值为default却无法识别为一个集群组名称,都是名称不对应导致的,到现在我都还没有完全把名称对应起来,后面有时间再来补详细的名称对应关系。此文只做记录文档。
io.seata.rm.datasource.sql.struct.Field[“value”])
此错误是因为实体类中有Date类型,并且对应数据库字段威dateTime类型,这是nacos的错误,升级nacos版本可解决此问题。也可以通过引入配置解决,配置解决方法如下:
在nacos中添加配置名称为:client.undo.logSerialization 值为: kryo
在项目pom.xml中引入
<dependency>
<groupId>com.esotericsoftware</groupId>
<artifactId>kryo</artifactId>
<version>4.0.2</version>
</dependency>
<dependency>
<groupId>de.javakaffee</groupId>
<artifactId>kryo-serializers</artifactId>
<version>0.44</version>
</dependency>