【seata】1.3.0配置以及遇到的问题

1,000 阅读1分钟

一、采用nacos1.3.2作为注册中心

1、官网 seata.io/zh-cn/

2、安装包地址 github.com/seata/seata…

3、示例仓库: seata-samples

4、官方1.3.0git地址 github.com/seata/seata…

二、服务端配置

1、配置数据库

服务端sql 客户端sql

2、配置file.config

删除多余配置,留下需要的配置

store {
  ## store mode: file、db、redis
  mode = "db"
  ## database store property
  db {
    ## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc.
    datasource = "druid"
    ## mysql/oracle/postgresql/h2/oceanbase etc.
    dbType = "mysql"
    driverClassName = "com.mysql.jdbc.Driver"
    url = "jdbc:mysql://xxx.xxx.x.xxx:3306/seata"
    user = "xxx"
    password = "xxx"
    minConn = 5
    maxConn = 30
    globalTable = "global_table"
    branchTable = "branch_table"
    lockTable = "lock_table"
    queryLimit = 100
    maxWait = 5000
  }
}

3、registry.conf

删除多余配置,留下需要的配置

registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  type = "nacos"

  nacos {
    application = "seata-server"
    serverAddr = "xxx.xxx.x.xxx:8848"
    group = "SEATA_GROUP"
    namespace = ""
    username = "nacos"
    password = "nacos"
  }
}

config {
  # file、nacos 、apollo、zk、consul、etcd3、springCloudConfig
  type = "nacos"

  nacos {
    serverAddr = "xxx.xxx.x.xxx:8848"
    namespace = ""
    group = "SEATA_GROUP"
    username = "nacos"
    password = "nacos"
  }
  
}

4、设置config.txt

删除多余配置,留下需要的配置

service.vgroupMapping.my_test_tx_group=default
service.default.grouplist=xxx.xxx.x.xxx:8091
service.disableGlobalTransaction=false
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://xxx.xxx.x.xxx:3306/seata?useUnicode=true
store.db.user=xxx
store.db.password=xxx
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

在nacos文件夹,推送配置给nacos

执行sh config.sh xxxxxxxxx

具体的配置运行参数和推送的方法

github.com/seata/seata…

5、客户端配置

1、application.yml

保留自己所需要的配置

seata:
  enabled: true
  application-id: service
  tx-service-group: my_test_tx_group
  service:
    vgroup-mapping:
      my_test_tx_group: default
    grouplist:
      default: xxx.xxx.xx.xxx:8091
    disable-global-transaction: false
  config:
    type: nacos
    nacos:
      namespace:
      serverAddr: xxx.xxx.xxx.xxx:8848
      group: SEATA_GROUP
      username: ""
      password: ""
  registry:
    type: nacos
    nacos:
      application: seata-server
      server-addr: xxx.xxx.x.xxx:8848
      group : SEATA_GROUP
      namespace:
      username: "nacos"
      password: "nacos"
  enable-auto-data-source-proxy: false

2、配置手动代理

application.yml

mybatis:
  mapperLocations: classpath:mapper/*.xml

DataSourceProxyConfig.java

@Configuration
public class DataSourceProxyConfig {

    @Value("${mybatis.mapperLocations}")
    private String mapperLocations;

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druidDataSource(){
        return new DruidDataSource();
    }

    @Bean
    public DataSourceProxy dataSourceProxy(DataSource dataSource) {
        return new DataSourceProxy(dataSource);
    }

    @Bean
    public SqlSessionFactory sqlSessionFactoryBean(DataSourceProxy dataSourceProxy) throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSourceProxy);
        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
        sqlSessionFactoryBean.setTransactionFactory(new SpringManagedTransactionFactory());
        return sqlSessionFactoryBean.getObject();
    }

}

启动类注解修改

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

三、报错处理

undo_log needs to contain the primary key.

问题原因

重复代理

处理

禁用seata的自动代理 enable-auto-data-source-proxy: false