springcloud-eureka-seata分佈式事務測試

測試案例下載 https://codeload.github.com/seata/seata-samples/zip/master

seata-server下載  https://github.com/seata/seata/releases

案例和seata-server包含創建數據表的sql腳本,拷貝到mysql數據庫執行。

undo_log數據包必須創建到每一個業務數據庫,本次測試是使用同一個數據庫。

下載seata-server解壓後修改 registry.conf,多餘的配置我刪除了。

1.seata-server配置修改

registry {
  # file 、nacos 、eureka、redis、zk
  type = "eureka" #註冊發現中心使用eureka

  eureka {
    serviceUrl = "http://127.0.0.1:8761/eureka" #部署的eureka服務地址
    application = "default"
    weight = "1"
  }
  file {
    name = "file.conf"
  }
}

config {
  # file、nacos 、apollo、zk
  type = "file"

  file {
    name = "file.conf"
  }
}

file.conf修改重點有兩個地方

store.mode='db' 並修改mysql數據庫連接

service.vgroup_mapping.my_test_tx_group = "default"   default是seata-server註冊到eureka的application名稱

my_test_tx_group和下面的springboot應用配置的spring.cloud.alibaba.seata.tx-service-group值一致

2.springboot應用修改

將seata-server的registry.conf和file.conf拷貝到項目resources下

application.properties 新增配置

spring.cloud.alibaba.seata.tx-service-group=my_test_tx_group

3.pom.xml主要引用

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath />
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.M8</spring-cloud.version>
    </properties>
    <groupId>com.kayin.order</groupId>
    <artifactId>order</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>order</name>
    <description>Demo project for Spring Boot</description>

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
      
          <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        
        <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.8</version>
        </dependency>
        
        <dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-all</artifactId>
            <version>0.8.1</version> #注意版本號要和seata-server保持一致 本次測試我都是使用的0.8.1

            否則會遇到can not register RM,err:can not connect to fescar-server問題。
        </dependency>
        
        <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-seata -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-seata</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

   配置完成後 啓動eureka->seata-server->bussiness/storage/order/account服務

   提交測試:http://localhost:8083/purchase/commit

   回滾測試:http://localhost:8083/purchase/rollback

   檢查 order_tbl和storage_tbl的數據 是否和預計一致

 

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