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>
Logo

快速构建 Web 应用程序

更多推荐