seata官方文档
http://seata.io/zh-cn/docs/overview/what-is-seata.html
最新版的seata比之前的旧版配置比较起来减少了配置项,在clent端不需要配置两个点儿conf文件了,精简了很多
只需要配置三个部分,一是servert端的 registry.conf 文件,另一个是clent端的yaml文件,最后一个则是代理数据源。
因此,新版seata使我们的配置出错率大大降低了。
注册中心的搭建
seata 的server端配置与启动
启动seata之前要先启动注册中心 ,并配置seata的conf目录下的 registry.conf 文件。
type类型改成 eureka方式启动
serviceUrl = “http://localhost:8001/eureka” 是注册中心的地址
application = “seata-server” 表示 在注册中心 seata的名称显示为seata-server
启动命令 : 在bin目录的cmd窗口下 输入: seata-server.bat -p 端口号
启动后 就可以在注册中心页面上看到seata的client端了
client端配置
ymal配置
seata:
tx-service-group: bank1app-fescar-service-group
service:
vgroup-mapping:
bank1app-fescar-service-group: seata-server # 此处配置对应Server端配置registry.eureka.application的值
registry:
type: eureka
eureka:
service-url: http://127.0.0.1:8001/eureka/
weight: 1
注意
配置代理数据源
配置代理数据源时会产生 数据源循环依赖问题,
解决办法是在启动类上配置
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
spring:
application:
name: bank1app
##################### DB #####################
datasource:
proxydatasource:
url: jdbc:mysql://localhost:3306/bank1?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT user()
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
connection-properties: druid.stat.mergeSql:true;druid.stat.slowSqlMillis:5000
配置类
package com.li.config;
import com.alibaba.druid.pool.DruidDataSource;
import io.seata.rm.datasource.DataSourceProxy;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
@Configuration
public class DatabaseConfiguration {
private final ApplicationContext applicationContext;
public DatabaseConfiguration(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.proxydatasource")
public DruidDataSource ds0() {
DruidDataSource druidDataSource = new DruidDataSource();
return druidDataSource;
}
@Primary
@Bean
public DataSource dataSource(DruidDataSource ds0) {
DataSourceProxy pds0 = new DataSourceProxy(ds0);
return pds0;
}
}
到此,配置上的东西我们就已经配置完了 ,接下来就是代码开发部分了