seata集成consul配置

项目组件

与seata相关组件:

  • 注册中心:consul
  • 网关:zuul
  • 微服务调用:feign
  • 数据库中间件:mybatis (单实例,无读写分离)

项目需求

多个微服务存在协同操作,需要事务控制保证数据一致性

配置集成方式

  1. 安装seata:githubSeata 没有代理的同学我在附上栏有提供附件
  2. 配置注册中心: registry.conf 中,选择注册中心为consul,自己的微服务名:microservice-seata-server(可自定义)
  3. 配置seata数据库:registry.conf中,配置选为file,name= “file.conf”,在file.conf中 store属性选db,db中配置数据库信息
  4. 启动seata注册到注册中心,连接数据库 我这里测试为windows版本,seata-server.bat 启动时最好加本地ip,否者seata识别为客户端地址,会使用局域网(172.*),对应启动时加入参数 -h ${ip}
  5. 微服务springboot项目main类修改注解(数据源动态代理)
  6. 编写数据库config类

付上

数据源动态配置类

/**
 * 数据源代理
 */
@Configuration
public class DataSourceConfiguration {
    
    

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

    @Primary
    @Bean("dataSource")
    public DataSourceProxy dataSource(DataSource druidDataSource){
    
    
        return new DataSourceProxy(druidDataSource);
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSourceProxy dataSourceProxy)throws Exception{
    
    
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSourceProxy);
        sqlSessionFactoryBean.setMapperLocations(
            					new PathMatchingResourcePatternResolver()
        										.getResources("classpath*:/mapper/*.xml"));
        sqlSessionFactoryBean.setTransactionFactory(new SpringManagedTransactionFactory());
        return sqlSessionFactoryBean.getObject();
    }


在启动类上添加上以下注解
@Import(DataSourceConfig.class) //DataSourceConfig是上面配置文件的
同时在@SpringBootApplication注解上排除自动加载数据源
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

pom依赖

 <!-- https://mvnrepository.com/artifact/io.seata/seata-spring-boot-starter -->
        <dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-spring-boot-starter</artifactId>
            <version>1.4.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
            <version>2.2.1.RELEASE</version>
            <exclusions>
                <exclusion>
                    <artifactId>io.seata</artifactId>
                    <groupId>seata-spring-boot-starter</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- api需至1.4.5版本 -->
        <dependency>
            <groupId>com.ecwid.consul</groupId>
            <artifactId>consul-api</artifactId>
            <version>1.4.5</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.3</version>
        </dependency>

application增加配置

这部分配置也可以写在file.conf中

seata:
  enabled: true
  application-id: applicationName
  tx-service-group: microservice-zgh-fescar-service-group
  enable-auto-data-source-proxy: false
  use-jdk-proxy: false
  registry:
    type: consul
    consul:
      cluster: microservice-seata-server
      server-addr: consul-server.zgh-dev.svc.cluster.local:8500
#  config:
#    file:
#      name: file.conf
  transport:
    # tcp, unix-domain-socket
    type: tcp
    #NIO, NATIVE
    server: nio
    #enable heartbeat
    heartbeat: true
    # the client batch send request enable
    enable-client-batch-send-request: false
    #thread factory for netty
    thread-factory:
      boss-thread-prefix: NettyBoss
      worker-thread-prefix: NettyServerNIOWorker
      server-executor-thread-prefix: NettyServerBizHandler
      share-boss-worker: false
      client-selector-thread-prefix: NettyClientSelector
      client-selector-thread-size: 1
      client-worker-thread-prefix: NettyClientWorkerThread
      # netty boss thread size
      boss-thread-size: 1
      #auto default pin or 8
      worker-thread-size: default
    # when destroy server, wait seconds
    shutdown:
      wait: 3
    serialization: seata
    compressor: none
  service:
    vgroup-mapping:
      microservice-zgh-fescar-service-group: default
    grouplist:
      zgh-dev-consul.sco.inossem.com:30820: default
    enable-degrade: true
    disable-global-transaction: false

`

猜你喜欢

转载自blog.csdn.net/gsh6022/article/details/110038447