seata1.1.0与consul的整合

半工半搞的,同事用了0.8.0的,现在最新是1.1.0,自己没配置成,周末继续研究

实践:
1.下载seata-server1.1.0  修改registry.con file.conf  指向consul 作为服务注册中心 数据库做为存储事务的 用于回滚
2.配置spring clound服务
3.测试事务回滚问题

 

环境说明:

 

seata-server版本1.1.0  如果没有可以去我的资源免费下载

spring clound使用的:Greenwich.SR2
sprint boot:2.1.8.RELEASE
spring-cloud-starter-consul-discovery:2.2.0.RELEASE

 

 

<dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-seata</artifactId>
        <version>2.1.0.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>io.seata</groupId>
                <artifactId>seata-all</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>io.seata</groupId>
        <artifactId>seata-all</artifactId>
        <version>1.1.0</version>
    </dependency>

 

改了consul-api的版本 要不然会报监听类找不到  大部分是需要最新的jar包

 

consol-api需要使用1.4.1

<dependency>
<groupId>com.ecwid.consul</groupId>
<artifactId>consul-api</artifactId>
<version>1.4.3</version>
</dependency>

 

 

seata-server 服务端的配置   目标使用consul注册中心  将seata-server注册上去

registry.conf 注册配置

registry type改为consul

  type = "consul"

consul指向consul服务端 将会向服务端注册一个服务 后续的客户端程序也需要保持相同的配置

  consul {

    cluster = "seata-server"

    serverAddr = "127.0.0.1:8500"

  }

config 存储的配置文件 默认还是指向file.conf 使用file的配置 客户端程序也是需要

再将服务端的file.conf registry.conf复制到resources即可
file.conf修改 使用server中的file-example.conf将里面的复制过去 修改内容

service:

vgroupMapping.事务分组名称="自定义事务名称"

自定义事务名称.grouplist = "对应的consul服务ip+端口"

例如:

  vgroupMapping.my_test_tx_group = "seata1"

  #only support when registry.type=file, please don't set multiple addresses

  seata1.grouplist = "127.0.0.1:8091"

 

store配置

修改mode="db"

前提是要配置好数据库 需要将server需要的3个表放到数据库 这里配置连接到该数据库上

如:

    driverClassName = "com.mysql.jdbc.Driver"

    url = "jdbc:mysql://127.0.0.1:3306/seata110"

    user = "root"

    password = "root"

 

其他不改

 

 

 

剩下的是spring clound服务的配置了

1.将seata-server的配置文件 复制到resource下 file.conf resource.conf

2.启动类添加:@EnableAutoDataSourceProxy

3.


 
对应yml
spring:    cloud:
      consul:        alibaba:
seata:
tx-service-group: my_test_tx_group

其他的就不用了  不用像0.8.0那样修改datasource代理 还有增加fegin的id  还有globalTransaction id 这些都会加上去的

 

程序启动日志:

2020-03-29 15:59:05.896  INFO 13156 --- [           main] s.s.a.d.SeataDataSourceBeanPostProcessor : Auto proxy of [druidDataSource]

2020-03-29 15:59:05.957  INFO 13156 --- [           main] i.s.common.loader.EnhancedServiceLoader  : load DbTypeParser[druid] extension by class[io.seata.sqlparser.druid.DruidDelegatingDbTypeParser]

2020-03-29 15:59:05.975  INFO 13156 --- [           main] i.s.common.loader.EnhancedServiceLoader  : load RegistryProvider[Consul] extension by class[io.seata.discovery.registry.consul.ConsulRegistryProvider]

2020-03-29 15:59:06.392  INFO 13156 --- [           main] i.s.c.r.netty.NettyClientChannelManager  : will connect to 192.168.56.1:8091

2020-03-29 15:59:06.393  INFO 13156 --- [           main] io.seata.core.rpc.netty.RmRpcClient      : RM will register :jdbc:mysql://47.112.130.230:3306/kitty_test

2020-03-29 15:59:06.398  INFO 13156 --- [           main] i.s.core.rpc.netty.NettyPoolableFactory  : NettyPool create channel to transactionRole:RMROLE,address:192.168.56.1:8091,msg:< RegisterRMRequest{resourceIds='jdbc:mysql://192.168.56.1:3306/test', applicationId='jy-user', transactionServiceGroup='my_test_tx_group'} >

 

 

 

 

Auto proxy of druidDataSource-->RegistryProvider consul-->RM will register-->transactionRole:-->

register RM success

 

 

 

 

 NettyPool create channel to transactionRole:TMROLE,address:192.168.56.1:8091,msg:

< RegisterTMRequest{applicationId='jy-user', transactionServiceGroup='my_test_tx_group'} >

对应应用id  group对应配置文件的

 

 

register success, cost 435 ms, version:1.1.0,role:TMROLE,channel:[id: 0xe5bf8da8, L:/192.168.56.1:56235 - R:/192.168.56.1:8091]

 

注册成功的

 

 

 网上这种整合太少 有研究可以交流 哈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章