分佈式事物------初探seata-nacos實現方式

推薦公衆號

彩蛋哦!!!(或者公衆號內點擊網賺獲取彩蛋)
程序員探索之路
如有其它意見歡迎指正微信 zzh_1_2_3

正文

1.按照demo例子下載,配置

https://github.com/seata/seata-samples/blob/master/springcloud-nacos-seata/README.md

2.jar引用

gradle:
// https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-seata
    implementation group: 'com.alibaba.cloud', name: 'spring-cloud-alibaba-seata', version: '2.1.0.RELEASE'
// https://mvnrepository.com/artifact/io.seata/seata-all
    implementation group: 'io.seata', name: 'seata-all', version: '1.0.0'
maven:
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-seata</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-all</artifactId>
            <version>1.0.0</version>
        </dependency>

3.項目中配置代理數據源

/**
 * 數據源配置
 *
 * @author HelloWoodes
 */
@Configuration
public class DataSourceConfig {

    @Bean
    public HikariDataSource hikariDataSource() {
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setUsername("root");
        hikariConfig.setPassword("zzh123");
        hikariConfig.setJdbcUrl("jdbc:mysql://localhost:3306/qtjuaa?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC");
        hikariConfig.setPoolName("Hikari");
        hikariConfig.setAutoCommit(false);
        HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);
        return hikariDataSource;
    }

    /**
     * 需要將 DataSourceProxy 設置爲主數據源,否則事務無法回滾
     *
     * @return The default datasource
     */
    @Primary
    @Bean("dataSource")
    public DataSource dataSource(HikariDataSource hikariDataSource) {
        return new DataSourceProxy(hikariDataSource);
    }
}

4.啓動類排除數據源自動注入

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

5.配置文件添加組名

cloud:
        alibaba:
          seata:
            tx-service-group: scheduling-service-group

6.項目中添加

registr.conf

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

  nacos {
    serverAddr = "127.0.0.1"
    namespace = "public"
    cluster = "default"
  }
}
config {
  # file、nacos 、apollo、zk、consul、etcd3
  type = "nacos"
  nacos {
    serverAddr = "127.0.0.1"
    namespace = ""
    cluster = "default"
  }
}

7.效果

回滾

2020-01-02 16:45:18.821 DEBUG 11704 --- [  XNIO-1 task-1] c.a.c.seata.web.SeataHandlerInterceptor  : xid in RootContext null xid in RpcContext 10.218.129.116:8091:2031660206
2020-01-02 16:45:18.822 DEBUG 11704 --- [  XNIO-1 task-1] io.seata.core.context.RootContext        : bind 10.218.129.116:8091:2031660206
。。。。。。
2020-01-02 16:45:19.771 DEBUG 11704 --- [atch_RMROLE_1_8] i.s.core.rpc.netty.RmMessageListener     : branch rollback result:xid=10.218.129.116:8091:2031660206,branchId=2031660207,branchStatus=PhaseTwo_Rollbacked,result code =Success,getMsg =null
。。。。。。
正常
2020-01-02 16:37:37.526 DEBUG 21288 --- [  XNIO-1 task-1] io.seata.core.context.RootContext        : bind 10.218.129.116:8091:2031660201
2020-01-02 16:37:37.527  INFO 21288 --- [  XNIO-1 task-1] i.seata.tm.api.DefaultGlobalTransaction  : Begin new global transaction [10.218.129.116:8091:2031660201]
2020-01-02 16:37:37.527 DEBUG 21288 --- [  XNIO-1 task-1] c.e.q.aop.logging.LoggingAspect          : Enter: com.ecidi.qianguanju.service.dingtalk.DingTalkInfoService.test() with argument[s] = [pit_chec]
2020-01-02 16:37:37.867 DEBUG 21288 --- [  XNIO-1 task-1] c.e.qianguanju.fegin.SchedulingClient    : [SchedulingClient#bpmBusLinkUpdate] ---> PUT http://scheduling/api/qtj/testa?type=pit_chec HTTP/1.1
2020-01-02 16:37:38.202 DEBUG 21288 --- [  XNIO-1 task-1] c.e.qianguanju.fegin.SchedulingClient    : [SchedulingClient#bpmBusLinkUpdate] <--- HTTP/1.1 200 OK (335ms)
2020-01-02 16:37:38.209 DEBUG 21288 --- [  XNIO-1 task-1] c.e.q.aop.logging.LoggingAspect          : Exit: com.ecidi.qianguanju.service.dingtalk.DingTalkInfoService.test() with result = null
2020-01-02 16:37:38.217 DEBUG 21288 --- [  XNIO-1 task-1] i.s.core.rpc.netty.AbstractRpcRemoting   : offer message: xid=10.218.129.116:8091:2031660201,extraData=null
2020-01-02 16:37:38.217 DEBUG 21288 --- [geSend_TMROLE_1] i.s.core.rpc.netty.AbstractRpcRemoting   : write message:SeataMergeMessage xid=10.218.129.116:8091:2031660201,extraData=null
, channel:[id: 0x4970c5b3, L:/10.218.129.116:55462 - R:/10.218.129.116:8091],active?true,writable?true,isopen?true
2020-01-02 16:37:38.225 DEBUG 21288 --- [  XNIO-1 task-1] io.seata.core.context.RootContext        : unbind 10.218.129.116:8091:2031660201 
。。。。。。
發佈了471 篇原創文章 · 獲贊 75 · 訪問量 49萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章