Seata使用小记

前言

Seata框架是一个XA(两阶段提交)解决方案

XA是一个分布式事务协议,由Tuxedo提出。XA中大致分为两部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如Oracle、DB2这些商业数据库都实现了XA接口,而事务管理器作为全局的调度者,负责各个本地资源的提交和回滚。

Seata术语
TC:事务协调者。维护全局和分支事务的状态,驱动全局事务提交或回滚。
TM:事务管理器。定义全局事务的范围:开始全局事务、提交或回滚全局事务
RM:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。


提示:以下是本篇文章正文内容,下面案例仅供参考

一、Seata 是什么?

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

模式介绍技术栈
AT无侵入的分布式事务解决方案,适用于不希望对业务进行改造的场景,几乎0学习成本(sql都由框架托管统一执行,会存在脏写问题)seata、shardingsphere
TCC高性能分布式事务解决方案,适用于核心系统等对性能有很高要求的场景(第一阶段会产生行锁,事务执行太久会锁行很久)seata、service-comb
Saga长事务解决方案,适用于业务流程长且需要保证事务最终一致性的业务系统(第一阶段就操作DB,会存在脏读问题)seata、shardingsphere、service-comb
XA分布式强一致性的解决方案,但性能低而使用较少。seata、shardingsphere

全局事务定义为若干分支事务的整体协调:

  • TM 向 TC 请求发起(Begin)、提交(Commit)、回滚(Rollback)全局事务。
  • TM 把代表全局事务的 XID 绑定到分支事务上。
  • RM 向 TC 注册,把分支事务关联到 XID 代表的全局事务中。
  • RM 把分支事务的执行结果上报给 TC。
  • TC 发送分支提交(Branch Commit)或分支回滚(Branch Rollback)命令给 RM。

AT模式流程图如下:
在这里插入图片描述

二、Seata-server服务搭建

1.Seata-server下载地址

https://github.com/seata/seata/releases

2.配置文件修改

  • registry.conf
registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  type = "nacos"
  loadBalance = "RandomLoadBalance"
  loadBalanceVirtualNodes = 10

  nacos {
    application = "seata-server"
    serverAddr = "x.x.x.x:8848"
    group = "DEFAULT_GROUP"
    namespace = "9681663f-887f-4a92-89e6-33e3e6f83e30"
    cluster = "default"
    username = "nacos"
    password = "nacos"
  }
 
  ...
 
  file {
    name = "file.conf"
  }
}

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

  ...
 
  file {
    name = "file.conf"
  }
}

  • file.conf
## transaction log store, only used in seata-server
store {
  ## store mode: file、db、redis
  mode = "db"

  ....

  ## database store property
  db {
    datasource = "druid"
    ## mysql/oracle/postgresql/h2/oceanbase etc.
    dbType = "mysql"
    driverClassName = "com.mysql.jdbc.Driver"
    url = "jdbc:mysql://x.x.x.x:3306/seata"
    user = "root"
    password = "123456"
    minConn = 5
    maxConn = 100
    globalTable = "global_table"
    branchTable = "branch_table"
    lockTable = "lock_table"
    queryLimit = 100
    maxWait = 5000
  }

  ...

}

3.Seata-server.db

下载目录 :https://github.com/seata/seata/blob/develop/script/server/db/

  • mysql.sql
-- -------------------------------- The script used when storeMode is 'db' --------------------------------
-- the table to store GlobalSession data
CREATE TABLE IF NOT EXISTS `global_table`
(
    `xid`                       VARCHAR(128) NOT NULL,
    `transaction_id`            BIGINT,
    `status`                    TINYINT      NOT NULL,
    `application_id`            VARCHAR(32),
    `transaction_service_group` VARCHAR(32),
    `transaction_name`          VARCHAR(128),
    `timeout`                   INT,
    `begin_time`                BIGINT,
    `application_data`          VARCHAR(2000),
    `gmt_create`                DATETIME,
    `gmt_modified`              DATETIME,
    PRIMARY KEY (`xid`),
    KEY `idx_gmt_modified_status` (`gmt_modified`, `status`),
    KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(
    `branch_id`         BIGINT       NOT NULL,
    `xid`               VARCHAR(128) NOT NULL,
    `transaction_id`    BIGINT,
    `resource_group_id` VARCHAR(32),
    `resource_id`       VARCHAR(256),
    `branch_type`       VARCHAR(8),
    `status`            TINYINT,
    `client_id`         VARCHAR(64),
    `application_data`  VARCHAR(2000),
    `gmt_create`        DATETIME(6),
    `gmt_modified`      DATETIME(6),
    PRIMARY KEY (`branch_id`),
    KEY `idx_xid` (`xid`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(
    `row_key`        VARCHAR(128) NOT NULL,
    `xid`            VARCHAR(128),
    `transaction_id` BIGINT,
    `branch_id`      BIGINT       NOT NULL,
    `resource_id`    VARCHAR(256),
    `table_name`     VARCHAR(32),
    `pk`             VARCHAR(36),
    `gmt_create`     DATETIME,
    `gmt_modified`   DATETIME,
    PRIMARY KEY (`row_key`),
    KEY `idx_branch_id` (`branch_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

4.启动Seata-server

D:\workspace\seata-server-1.4.0\seata\bin>seata-server.bat
Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file D:\workspace\seata-server-1.4.0\seata\bin\\../logs/seata_gc.log due to No such file or directory

16:55:04,791 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
16:55:04,791 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
16:55:04,792 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/D:/workspace/seata-server-1.4.0/seata/conf/logback.xml]
16:55:04,792 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs multiple times on the classpath.
16:55:04,792 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [file:/D:/workspace/seata-server-1.4.0/seata/conf/logback.xml]
16:55:04,792 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [jar:file:/D:/workspace/seata-server-1.4.0/seata/lib/seata-server-1.4.0.jar!/logback.xml]
16:55:04,903 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
16:55:04,907 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Will scan for changes in [file:/D:/workspace/seata-server-1.4.0/seata/conf/logback.xml]
16:55:04,907 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeTask scanning period to 1 minutes
16:55:04,910 |-INFO in ch.qos.logback.classic.joran.action.LoggerContextListenerAction - Adding LoggerContextListener of type [io.seata.server.logging.listener.SystemPropertyLoggerContextListener] to the object stack
16:55:04,910 |-INFO in ch.qos.logback.classic.joran.action.LoggerContextListenerAction - Starting LoggerContextListener
16:55:04,910 |-INFO in ch.qos.logback.core.joran.action.ConversionRuleAction - registering conversion word clr with class [io.seata.server.logging.logback.ColorConverter]
16:55:04,910 |-INFO in ch.qos.logback.core.joran.action.ConversionRuleAction - registering conversion word wex with class [io.seata.server.logging.logback.WhitespaceThrowableProxyConverter]
16:55:04,910 |-INFO in ch.qos.logback.core.joran.action.ConversionRuleAction - registering conversion word wEx with class [io.seata.server.logging.logback.ExtendedWhitespaceThrowableProxyConverter]
16:55:04,912 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
16:55:04,915 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [CONSOLE]
16:55:04,920 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
16:55:05,014 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
16:55:05,016 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [ALL]
16:55:05,043 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1987083830 - Archive files will be limited to [2048 MB] each.
16:55:05,045 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1987083830 - Will use gz compression
16:55:05,046 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1987083830 - Will use the pattern D:/Users/80320948/logs/seata/history/seata-server.8091.all.%d{yyyy-MM-dd}.%i.log for the active file
16:55:05,048 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@614ddd49 - The date pattern is 'yyyy-MM-dd' from file name pattern 'D:/Users/80320948/logs/seata/history/seata-server.8091.all.%d{yyyy-MM-dd}.%i.log.gz'.
16:55:05,048 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@614ddd49 - Roll-over at midnight.
16:55:05,051 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@614ddd49 - Setting initial period to Tue Apr 06 16:54:52 CST 2021
16:55:05,053 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1987083830 - Cleaning on start up
16:55:05,053 |-INFO in c.q.l.core.rolling.helper.TimeBasedArchiveRemover - first clean up after appender initialization
16:55:05,054 |-INFO in c.q.l.core.rolling.helper.TimeBasedArchiveRemover - Multiple periods, i.e. 32 periods, seem to have elapsed. This is expected at application start.
16:55:05,054 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
16:55:05,056 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[ALL] - Active log file name: D:\Users\80320948/logs/seata/seata-server.8091.all.log
16:55:05,056 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[ALL] - File property is set to [D:\Users\80320948/logs/seata/seata-server.8091.all.log]
16:55:05,057 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
16:55:05,057 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [WARN]
16:55:05,059 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@525683462 - Archive files will be limited to [2048 MB] each.
16:55:05,059 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@525683462 - Will use gz compression
16:55:05,059 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@525683462 - Will use the pattern D:/Users/80320948/logs/seata/history/seata-server.8091.warn.%d{yyyy-MM-dd}.%i.log for the active file
16:55:05,060 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@694e1548 - The date pattern is 'yyyy-MM-dd' from file name pattern 'D:/Users/80320948/logs/seata/history/seata-server.8091.warn.%d{yyyy-MM-dd}.%i.log.gz'.
16:55:05,060 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@694e1548 - Roll-over at midnight.
16:55:05,060 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@694e1548 - Setting initial period to Tue Apr 06 16:54:22 CST 2021
16:55:05,061 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@525683462 - Cleaning on start up
16:55:05,061 |-INFO in c.q.l.core.rolling.helper.TimeBasedArchiveRemover - first clean up after appender initialization
16:55:05,061 |-INFO in c.q.l.core.rolling.helper.TimeBasedArchiveRemover - Multiple periods, i.e. 32 periods, seem to have elapsed. This is expected at application start.
16:55:05,061 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
16:55:05,062 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[WARN] - Active log file name: D:\Users\80320948/logs/seata/seata-server.8091.warn.log
16:55:05,062 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[WARN] - File property is set to [D:\Users\80320948/logs/seata/seata-server.8091.warn.log]
16:55:05,062 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
16:55:05,062 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [ERROR]
16:55:05,063 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@473581465 - Archive files will be limited to [2048 MB] each.
16:55:05,063 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@473581465 - Will use gz compression
16:55:05,063 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@473581465 - Will use the pattern D:/Users/80320948/logs/seata/history/seata-server.8091.error.%d{yyyy-MM-dd}.%i.log for the active file
16:55:05,064 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@131276c2 - The date pattern is 'yyyy-MM-dd' from file name pattern 'D:/Users/80320948/logs/seata/history/seata-server.8091.error.%d{yyyy-MM-dd}.%i.log.gz'.
16:55:05,064 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@131276c2 - Roll-over at midnight.
16:55:05,064 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@131276c2 - Setting initial period to Tue Apr 06 16:54:23 CST 2021
16:55:05,064 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@473581465 - Cleaning on start up
16:55:05,064 |-INFO in c.q.l.core.rolling.helper.TimeBasedArchiveRemover - first clean up after appender initialization
16:55:05,065 |-INFO in c.q.l.core.rolling.helper.TimeBasedArchiveRemover - Multiple periods, i.e. 32 periods, seem to have elapsed. This is expected at application start.
16:55:05,065 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
16:55:05,065 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[ERROR] - Active log file name: D:\Users\80320948/logs/seata/seata-server.8091.error.log
16:55:05,065 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[ERROR] - File property is set to [D:\Users\80320948/logs/seata/seata-server.8091.error.log]
16:55:05,065 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO
16:55:05,066 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [ALL] to Logger[ROOT]
16:55:05,066 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [WARN] to Logger[ROOT]
16:55:05,066 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [ERROR] to Logger[ROOT]
16:55:05,066 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[ROOT]
16:55:05,066 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
16:55:05,067 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@26aa12dd - Registering current configuration as safe fallback point

SLF4J: A number (18) of logging calls during the initialization phase have been intercepted and are
SLF4J: now being replayed. These are subject to the filtering rules of the underlying logging system.
SLF4J: See also http://www.slf4j.org/codes.html#replay
16:55:05.131  INFO --- [                     main] io.seata.config.FileConfiguration        : The file name of the operation is registry
16:55:05.135  INFO --- [                     main] io.seata.config.FileConfiguration        : The configuration file used is D:\workspace\seata-server-1.4.0\seata\conf\registry.conf
16:55:05.207  INFO --- [                     main] io.seata.config.FileConfiguration        : The file name of the operation is file.conf
16:55:05.208  INFO --- [                     main] io.seata.config.FileConfiguration        : The configuration file used is file.conf
16:55:09.641  INFO --- [                     main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited
16:55:10.283  INFO --- [                     main] i.s.core.rpc.netty.NettyServerBootstrap  : Server started, listen port: 8091

三、测试项目搭建

1.订单服务

  • pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>order</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>order</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- Seata -->
        <dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-spring-boot-starter</artifactId>
            <version>1.0.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>seata-all</artifactId>
                    <groupId>io.seata</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-all</artifactId>
            <version>1.0.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
            <version>2.2.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.2.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.11</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
            <version>2.2.6.RELEASE</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

  • bootstrap.yml
server:
  port: 8080

spring:
  application:
    name: order
  cloud:
    nacos:
      server-addr: x.x.x.x:8848
      discovery:
        namespace: 9681663f-887f-4a92-89e6-33e3e6f83e30

  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://x.x.x.x:3306/order?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: 123456

feign:
  client:
    config:
      default:
        read-timeout: 600000
        connect-timeout: 600000

seata:
  registry:
    nacos:
      server-addr: x.x.x.x:8848
      namespace: 9681663f-887f-4a92-89e6-33e3e6f83e30
  enabled: true

logging:
  level:
    io:
      seata: info
  • file.conf
service{
    disableGlobalTransaction=false
}
  • FeignInterceptor
    将全局事务ID放入请求头中,传递至其他服务
@Component
public class FeignInterceptor implements RequestInterceptor {

    @Override
    public void apply(RequestTemplate requestTemplate) {
        requestTemplate.header(RootContext.KEY_XID, RootContext.getXID());
    }
}

  • OrderServiceImpl
@Service
public class OrderServiceImpl implements OrderService {

    private OrderMapper orderMapper;

    private StockClient stockClient;

    public OrderServiceImpl(OrderMapper orderMapper, StockClient stockClient) {
        this.orderMapper = orderMapper;
        this.stockClient = stockClient;
    }

    @Override
    @GlobalTransactional(rollbackFor = Exception.class)
    public void commit(Long userId, Long goodsId, Integer count) {
        OrderEntity orderEntity = new OrderEntity();
        orderEntity.setUserId(userId);
        orderEntity.setGoodsId(goodsId);
        orderMapper.save(orderEntity);
        StockDeductRequestDTO request = new StockDeductRequestDTO();
        request.setGoodsId(goodsId);
        request.setCount(count);
        stockClient.deduct(request);
    }
}

  • 启动
D:\Java\jdk1.8.0_141\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:63800,suspend=y,server=n -XX:TieredStopAtLevel=1 -noverify -Dspring.profiles.active=dev -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -javaagent:D:\Users\80320948\.IntelliJIdea2019.3\system\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "D:\Java\jdk1.8.0_141\jre\lib\charsets.jar;D:\Java\jdk1.8.0_141\jre\lib\deploy.jar;D:\Java\jdk1.8.0_141\jre\lib\ext\access-bridge-64.jar;D:\Java\jdk1.8.0_141\jre\lib\ext\cldrdata.jar;D:\Java\jdk1.8.0_141\jre\lib\ext\dnsns.jar;D:\Java\jdk1.8.0_141\jre\lib\ext\jaccess.jar;D:\Java\jdk1.8.0_141\jre\lib\ext\jfxrt.jar;D:\Java\jdk1.8.0_141\jre\lib\ext\localedata.jar;D:\Java\jdk1.8.0_141\jre\lib\ext\nashorn.jar;D:\Java\jdk1.8.0_141\jre\lib\ext\sunec.jar;D:\Java\jdk1.8.0_141\jre\lib\ext\sunjce_provider.jar;D:\Java\jdk1.8.0_141\jre\lib\ext\sunmscapi.jar;D:\Java\jdk1.8.0_141\jre\lib\ext\sunpkcs11.jar;D:\Java\jdk1.8.0_141\jre\lib\ext\zipfs.jar;D:\Java\jdk1.8.0_141\jre\lib\javaws.jar;D:\Java\jdk1.8.0_141\jre\lib\jce.jar;D:\Java\jdk1.8.0_141\jre\lib\jfr.jar;D:\Java\jdk1.8.0_141\jre\lib\jfxswt.jar;D:\Java\jdk1.8.0_141\jre\lib\jsse.jar;D:\Java\jdk1.8.0_141\jre\lib\management-agent.jar;D:\Java\jdk1.8.0_141\jre\lib\plugin.jar;D:\Java\jdk1.8.0_141\jre\lib\resources.jar;D:\Java\jdk1.8.0_141\jre\lib\rt.jar;D:\workspace\seata\order\target\classes;D:\Users\80320948\.m2\repository\org\springframework\boot\spring-boot-starter-data-jpa\2.2.6.RELEASE\spring-boot-starter-data-jpa-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\boot\spring-boot-starter-aop\2.2.6.RELEASE\spring-boot-starter-aop-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\aspectj\aspectjweaver\1.9.5\aspectjweaver-1.9.5.jar;D:\Users\80320948\.m2\repository\jakarta\activation\jakarta.activation-api\1.2.2\jakarta.activation-api-1.2.2.jar;D:\Users\80320948\.m2\repository\jakarta\persistence\jakarta.persistence-api\2.2.3\jakarta.persistence-api-2.2.3.jar;D:\Users\80320948\.m2\repository\jakarta\transaction\jakarta.transaction-api\1.3.3\jakarta.transaction-api-1.3.3.jar;D:\Users\80320948\.m2\repository\org\hibernate\hibernate-core\5.4.12.Final\hibernate-core-5.4.12.Final.jar;D:\Users\80320948\.m2\repository\org\jboss\logging\jboss-logging\3.4.1.Final\jboss-logging-3.4.1.Final.jar;D:\Users\80320948\.m2\repository\org\javassist\javassist\3.24.0-GA\javassist-3.24.0-GA.jar;D:\Users\80320948\.m2\repository\net\bytebuddy\byte-buddy\1.10.8\byte-buddy-1.10.8.jar;D:\Users\80320948\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;D:\Users\80320948\.m2\repository\org\jboss\jandex\2.1.1.Final\jandex-2.1.1.Final.jar;D:\Users\80320948\.m2\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;D:\Users\80320948\.m2\repository\org\dom4j\dom4j\2.1.1\dom4j-2.1.1.jar;D:\Users\80320948\.m2\repository\org\hibernate\common\hibernate-commons-annotations\5.1.0.Final\hibernate-commons-annotations-5.1.0.Final.jar;D:\Users\80320948\.m2\repository\org\glassfish\jaxb\jaxb-runtime\2.3.2\jaxb-runtime-2.3.2.jar;D:\Users\80320948\.m2\repository\org\glassfish\jaxb\txw2\2.3.2\txw2-2.3.2.jar;D:\Users\80320948\.m2\repository\com\sun\istack\istack-commons-runtime\3.0.8\istack-commons-runtime-3.0.8.jar;D:\Users\80320948\.m2\repository\org\jvnet\staxex\stax-ex\1.8.1\stax-ex-1.8.1.jar;D:\Users\80320948\.m2\repository\com\sun\xml\fastinfoset\FastInfoset\1.2.16\FastInfoset-1.2.16.jar;D:\Users\80320948\.m2\repository\org\springframework\data\spring-data-jpa\2.2.6.RELEASE\spring-data-jpa-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\data\spring-data-commons\2.2.6.RELEASE\spring-data-commons-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\spring-orm\5.2.5.RELEASE\spring-orm-5.2.5.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\spring-tx\5.2.5.RELEASE\spring-tx-5.2.5.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\spring-aspects\5.2.5.RELEASE\spring-aspects-5.2.5.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.2.6.RELEASE\spring-boot-starter-web-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\boot\spring-boot-starter\2.2.6.RELEASE\spring-boot-starter-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.2.6.RELEASE\spring-boot-starter-logging-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\Users\80320948\.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\Users\80320948\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.12.1\log4j-to-slf4j-2.12.1.jar;D:\Users\80320948\.m2\repository\org\apache\logging\log4j\log4j-api\2.12.1\log4j-api-2.12.1.jar;D:\Users\80320948\.m2\repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;D:\Users\80320948\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\Users\80320948\.m2\repository\org\yaml\snakeyaml\1.25\snakeyaml-1.25.jar;D:\Users\80320948\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.2.6.RELEASE\spring-boot-starter-json-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.10.3\jackson-databind-2.10.3.jar;D:\Users\80320948\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.10.3\jackson-annotations-2.10.3.jar;D:\Users\80320948\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.10.3\jackson-datatype-jdk8-2.10.3.jar;D:\Users\80320948\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.10.3\jackson-datatype-jsr310-2.10.3.jar;D:\Users\80320948\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.10.3\jackson-module-parameter-names-2.10.3.jar;D:\Users\80320948\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.2.6.RELEASE\spring-boot-starter-tomcat-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.33\tomcat-embed-core-9.0.33.jar;D:\Users\80320948\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.33\tomcat-embed-el-9.0.33.jar;D:\Users\80320948\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.33\tomcat-embed-websocket-9.0.33.jar;D:\Users\80320948\.m2\repository\org\springframework\boot\spring-boot-starter-validation\2.2.6.RELEASE\spring-boot-starter-validation-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\jakarta\validation\jakarta.validation-api\2.0.2\jakarta.validation-api-2.0.2.jar;D:\Users\80320948\.m2\repository\org\hibernate\validator\hibernate-validator\6.0.18.Final\hibernate-validator-6.0.18.Final.jar;D:\Users\80320948\.m2\repository\org\springframework\spring-web\5.2.5.RELEASE\spring-web-5.2.5.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\spring-webmvc\5.2.5.RELEASE\spring-webmvc-5.2.5.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\spring-expression\5.2.5.RELEASE\spring-expression-5.2.5.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\boot\spring-boot-devtools\2.2.6.RELEASE\spring-boot-devtools-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\boot\spring-boot\2.2.6.RELEASE\spring-boot-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.2.6.RELEASE\spring-boot-autoconfigure-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\jakarta\xml\bind\jakarta.xml.bind-api\2.3.3\jakarta.xml.bind-api-2.3.3.jar;D:\Users\80320948\.m2\repository\org\springframework\spring-core\5.2.5.RELEASE\spring-core-5.2.5.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\spring-jcl\5.2.5.RELEASE\spring-jcl-5.2.5.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\2.2.6.RELEASE\spring-boot-starter-jdbc-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\com\zaxxer\HikariCP\3.4.2\HikariCP-3.4.2.jar;D:\Users\80320948\.m2\repository\org\springframework\spring-jdbc\5.2.5.RELEASE\spring-jdbc-5.2.5.RELEASE.jar;D:\Users\80320948\.m2\repository\mysql\mysql-connector-java\8.0.19\mysql-connector-java-8.0.19.jar;D:\Users\80320948\.m2\repository\io\seata\seata-spring-boot-starter\1.0.0\seata-spring-boot-starter-1.0.0.jar;D:\Users\80320948\.m2\repository\io\seata\seata-all\1.0.0\seata-all-1.0.0.jar;D:\Users\80320948\.m2\repository\org\springframework\spring-context\5.2.5.RELEASE\spring-context-5.2.5.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\spring-beans\5.2.5.RELEASE\spring-beans-5.2.5.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\spring-aop\5.2.5.RELEASE\spring-aop-5.2.5.RELEASE.jar;D:\Users\80320948\.m2\repository\io\netty\netty-all\4.1.48.Final\netty-all-4.1.48.Final.jar;D:\Users\80320948\.m2\repository\com\alibaba\fastjson\1.2.60\fastjson-1.2.60.jar;D:\Users\80320948\.m2\repository\com\alibaba\druid\1.1.12\druid-1.1.12.jar;D:\Users\80320948\.m2\repository\com\typesafe\config\1.2.1\config-1.2.1.jar;D:\Users\80320948\.m2\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;D:\Users\80320948\.m2\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;D:\Users\80320948\.m2\repository\org\apache\commons\commons-pool2\2.7.0\commons-pool2-2.7.0.jar;D:\Users\80320948\.m2\repository\commons-pool\commons-pool\1.6\commons-pool-1.6.jar;D:\Users\80320948\.m2\repository\com\google\protobuf\protobuf-java\3.7.1\protobuf-java-3.7.1.jar;D:\Users\80320948\.m2\repository\cglib\cglib\3.1\cglib-3.1.jar;D:\Users\80320948\.m2\repository\org\ow2\asm\asm\4.2\asm-4.2.jar;D:\Users\80320948\.m2\repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;D:\Users\80320948\.m2\repository\com\github\ben-manes\caffeine\caffeine\2.8.1\caffeine-2.8.1.jar;D:\Users\80320948\.m2\repository\org\checkerframework\checker-qual\3.1.0\checker-qual-3.1.0.jar;D:\Users\80320948\.m2\repository\com\google\errorprone\error_prone_annotations\2.3.4\error_prone_annotations-2.3.4.jar;D:\Users\80320948\.m2\repository\org\springframework\cloud\spring-cloud-starter\2.2.6.RELEASE\spring-cloud-starter-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\cloud\spring-cloud-context\2.2.6.RELEASE\spring-cloud-context-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\security\spring-security-crypto\5.2.2.RELEASE\spring-security-crypto-5.2.2.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\cloud\spring-cloud-commons\2.2.6.RELEASE\spring-cloud-commons-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\security\spring-security-rsa\1.0.9.RELEASE\spring-security-rsa-1.0.9.RELEASE.jar;D:\Users\80320948\.m2\repository\org\bouncycastle\bcpkix-jdk15on\1.64\bcpkix-jdk15on-1.64.jar;D:\Users\80320948\.m2\repository\org\bouncycastle\bcprov-jdk15on\1.64\bcprov-jdk15on-1.64.jar;D:\Users\80320948\.m2\repository\org\springframework\cloud\spring-cloud-starter-openfeign\2.2.6.RELEASE\spring-cloud-starter-openfeign-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\cloud\spring-cloud-openfeign-core\2.2.6.RELEASE\spring-cloud-openfeign-core-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\cloud\spring-cloud-netflix-ribbon\2.2.6.RELEASE\spring-cloud-netflix-ribbon-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\cloud\spring-cloud-netflix-archaius\2.2.6.RELEASE\spring-cloud-netflix-archaius-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\io\github\openfeign\form\feign-form-spring\3.8.0\feign-form-spring-3.8.0.jar;D:\Users\80320948\.m2\repository\io\github\openfeign\form\feign-form\3.8.0\feign-form-3.8.0.jar;D:\Users\80320948\.m2\repository\commons-fileupload\commons-fileupload\1.4\commons-fileupload-1.4.jar;D:\Users\80320948\.m2\repository\io\github\openfeign\feign-core\10.10.1\feign-core-10.10.1.jar;D:\Users\80320948\.m2\repository\io\github\openfeign\feign-slf4j\10.10.1\feign-slf4j-10.10.1.jar;D:\Users\80320948\.m2\repository\io\github\openfeign\feign-hystrix\10.10.1\feign-hystrix-10.10.1.jar;D:\Users\80320948\.m2\repository\com\netflix\archaius\archaius-core\0.7.6\archaius-core-0.7.6.jar;D:\Users\80320948\.m2\repository\com\google\code\findbugs\jsr305\3.0.1\jsr305-3.0.1.jar;D:\Users\80320948\.m2\repository\commons-configuration\commons-configuration\1.8\commons-configuration-1.8.jar;D:\Users\80320948\.m2\repository\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar;D:\Users\80320948\.m2\repository\com\netflix\hystrix\hystrix-core\1.5.18\hystrix-core-1.5.18.jar;D:\Users\80320948\.m2\repository\org\hdrhistogram\HdrHistogram\2.1.9\HdrHistogram-2.1.9.jar;D:\Users\80320948\.m2\repository\com\alibaba\cloud\spring-cloud-starter-alibaba-nacos-discovery\2.2.1.RELEASE\spring-cloud-starter-alibaba-nacos-discovery-2.2.1.RELEASE.jar;D:\Users\80320948\.m2\repository\com\alibaba\nacos\nacos-client\1.2.1\nacos-client-1.2.1.jar;D:\Users\80320948\.m2\repository\com\alibaba\nacos\nacos-common\1.2.1\nacos-common-1.2.1.jar;D:\Users\80320948\.m2\repository\commons-io\commons-io\2.2\commons-io-2.2.jar;D:\Users\80320948\.m2\repository\com\alibaba\nacos\nacos-api\1.2.1\nacos-api-1.2.1.jar;D:\Users\80320948\.m2\repository\com\google\guava\guava\22.0\guava-22.0.jar;D:\Users\80320948\.m2\repository\com\google\j2objc\j2objc-annotations\1.1\j2objc-annotations-1.1.jar;D:\Users\80320948\.m2\repository\org\codehaus\mojo\animal-sniffer-annotations\1.14\animal-sniffer-annotations-1.14.jar;D:\Users\80320948\.m2\repository\commons-codec\commons-codec\1.13\commons-codec-1.13.jar;D:\Users\80320948\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.10.3\jackson-core-2.10.3.jar;D:\Users\80320948\.m2\repository\io\prometheus\simpleclient\0.5.0\simpleclient-0.5.0.jar;D:\Users\80320948\.m2\repository\com\alibaba\spring\spring-context-support\1.0.6\spring-context-support-1.0.6.jar;D:\Users\80320948\.m2\repository\org\springframework\cloud\spring-cloud-starter-netflix-ribbon\2.2.2.RELEASE\spring-cloud-starter-netflix-ribbon-2.2.2.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\cloud\spring-cloud-starter-netflix-archaius\2.2.2.RELEASE\spring-cloud-starter-netflix-archaius-2.2.2.RELEASE.jar;D:\Users\80320948\.m2\repository\com\netflix\ribbon\ribbon\2.3.0\ribbon-2.3.0.jar;D:\Users\80320948\.m2\repository\com\netflix\ribbon\ribbon-transport\2.3.0\ribbon-transport-2.3.0.jar;D:\Users\80320948\.m2\repository\io\reactivex\rxnetty-contexts\0.4.9\rxnetty-contexts-0.4.9.jar;D:\Users\80320948\.m2\repository\io\reactivex\rxnetty-servo\0.4.9\rxnetty-servo-0.4.9.jar;D:\Users\80320948\.m2\repository\javax\inject\javax.inject\1\javax.inject-1.jar;D:\Users\80320948\.m2\repository\io\reactivex\rxnetty\0.4.9\rxnetty-0.4.9.jar;D:\Users\80320948\.m2\repository\com\netflix\ribbon\ribbon-core\2.3.0\ribbon-core-2.3.0.jar;D:\Users\80320948\.m2\repository\com\netflix\ribbon\ribbon-httpclient\2.3.0\ribbon-httpclient-2.3.0.jar;D:\Users\80320948\.m2\repository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;D:\Users\80320948\.m2\repository\org\apache\httpcomponents\httpclient\4.5.12\httpclient-4.5.12.jar;D:\Users\80320948\.m2\repository\org\apache\httpcomponents\httpcore\4.4.13\httpcore-4.4.13.jar;D:\Users\80320948\.m2\repository\com\sun\jersey\jersey-client\1.19.1\jersey-client-1.19.1.jar;D:\Users\80320948\.m2\repository\com\sun\jersey\jersey-core\1.19.1\jersey-core-1.19.1.jar;D:\Users\80320948\.m2\repository\javax\ws\rs\jsr311-api\1.1.1\jsr311-api-1.1.1.jar;D:\Users\80320948\.m2\repository\com\sun\jersey\contribs\jersey-apache-client4\1.19.1\jersey-apache-client4-1.19.1.jar;D:\Users\80320948\.m2\repository\com\netflix\servo\servo-core\0.10.1\servo-core-0.10.1.jar;D:\Users\80320948\.m2\repository\com\netflix\servo\servo-internal\0.10.1\servo-internal-0.10.1.jar;D:\Users\80320948\.m2\repository\com\netflix\netflix-commons\netflix-commons-util\0.1.1\netflix-commons-util-0.1.1.jar;D:\Users\80320948\.m2\repository\com\netflix\ribbon\ribbon-loadbalancer\2.3.0\ribbon-loadbalancer-2.3.0.jar;D:\Users\80320948\.m2\repository\com\netflix\netflix-commons\netflix-statistics\0.1.1\netflix-statistics-0.1.1.jar;D:\Users\80320948\.m2\repository\io\reactivex\rxjava\1.3.8\rxjava-1.3.8.jar;D:\Users\80320948\.m2\repository\org\apache\commons\commons-lang3\3.11\commons-lang3-3.11.jar;D:\Users\80320948\.m2\repository\org\springframework\cloud\spring-cloud-starter-sleuth\2.2.6.RELEASE\spring-cloud-starter-sleuth-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\springframework\cloud\spring-cloud-sleuth-core\2.2.6.RELEASE\spring-cloud-sleuth-core-2.2.6.RELEASE.jar;D:\Users\80320948\.m2\repository\org\aspectj\aspectjrt\1.9.5\aspectjrt-1.9.5.jar;D:\Users\80320948\.m2\repository\io\zipkin\brave\brave\5.12.7\brave-5.12.7.jar;D:\Users\80320948\.m2\repository\io\zipkin\reporter2\zipkin-reporter-brave\2.15.2\zipkin-reporter-brave-2.15.2.jar;D:\Users\80320948\.m2\repository\io\zipkin\brave\brave-context-slf4j\5.12.7\brave-context-slf4j-5.12.7.jar;D:\Users\80320948\.m2\repository\io\zipkin\brave\brave-instrumentation-messaging\5.12.7\brave-instrumentation-messaging-5.12.7.jar;D:\Users\80320948\.m2\repository\io\zipkin\brave\brave-instrumentation-rpc\5.12.7\brave-instrumentation-rpc-5.12.7.jar;D:\Users\80320948\.m2\repository\io\zipkin\brave\brave-instrumentation-spring-web\5.12.7\brave-instrumentation-spring-web-5.12.7.jar;D:\Users\80320948\.m2\repository\io\zipkin\brave\brave-instrumentation-http\5.12.7\brave-instrumentation-http-5.12.7.jar;D:\Users\80320948\.m2\repository\io\zipkin\brave\brave-instrumentation-spring-rabbit\5.12.7\brave-instrumentation-spring-rabbit-5.12.7.jar;D:\Users\80320948\.m2\repository\io\zipkin\brave\brave-instrumentation-kafka-clients\5.12.7\brave-instrumentation-kafka-clients-5.12.7.jar;D:\Users\80320948\.m2\repository\io\zipkin\brave\brave-instrumentation-kafka-streams\5.12.7\brave-instrumentation-kafka-streams-5.12.7.jar;D:\Users\80320948\.m2\repository\io\zipkin\brave\brave-instrumentation-httpclient\5.12.7\brave-instrumentation-httpclient-5.12.7.jar;D:\Users\80320948\.m2\repository\io\zipkin\brave\brave-instrumentation-httpasyncclient\5.12.7\brave-instrumentation-httpasyncclient-5.12.7.jar;D:\Users\80320948\.m2\repository\io\zipkin\brave\brave-instrumentation-spring-webmvc\5.12.7\brave-instrumentation-spring-webmvc-5.12.7.jar;D:\Users\80320948\.m2\repository\io\zipkin\brave\brave-instrumentation-servlet\5.12.7\brave-instrumentation-servlet-5.12.7.jar;D:\Users\80320948\.m2\repository\io\zipkin\brave\brave-instrumentation-jms\5.12.7\brave-instrumentation-jms-5.12.7.jar;D:\Users\80320948\.m2\repository\io\zipkin\reporter2\zipkin-reporter-metrics-micrometer\2.15.2\zipkin-reporter-metrics-micrometer-2.15.2.jar;D:\Users\80320948\.m2\repository\io\zipkin\reporter2\zipkin-reporter\2.15.2\zipkin-reporter-2.15.2.jar;D:\Users\80320948\.m2\repository\io\zipkin\zipkin2\zipkin\2.21.7\zipkin-2.21.7.jar;D:\Program Files\JetBrains\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar" com.example.order.OrderApplication
Connected to the target VM, address: '127.0.0.1:63800', transport: 'socket'
2021-04-06 17:27:40.521  INFO [order,,,] 227336 --- [  restartedMain] o.s.b.devtools.restart.ChangeableUrls    : The Class-Path manifest attribute in D:\Users\80320948\.m2\repository\org\glassfish\jaxb\jaxb-runtime\2.3.2\jaxb-runtime-2.3.2.jar referenced one or more files that do not exist: file:/D:/Users/80320948/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/jakarta.xml.bind-api-2.3.2.jar,file:/D:/Users/80320948/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/txw2-2.3.2.jar,file:/D:/Users/80320948/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/istack-commons-runtime-3.0.8.jar,file:/D:/Users/80320948/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/stax-ex-1.8.1.jar,file:/D:/Users/80320948/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/FastInfoset-1.2.16.jar,file:/D:/Users/80320948/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/jakarta.activation-api-1.2.1.jar
2021-04-06 17:27:40.523  INFO [order,,,] 227336 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.6.RELEASE)

2021-04-06 17:27:40.839  INFO [order,,,] 227336 --- [  restartedMain] com.example.order.OrderApplication       : The following profiles are active: dev
2021-04-06 17:27:41.546  INFO [order,,,] 227336 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2021-04-06 17:27:41.611  INFO [order,,,] 227336 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 57ms. Found 1 JPA repository interfaces.
2021-04-06 17:27:41.928  INFO [order,,,] 227336 --- [  restartedMain] o.s.cloud.context.scope.GenericScope     : BeanFactory id=b8d5fd61-d6fe-3711-84da-ade9e6f8dd02
2021-04-06 17:27:41.997  INFO [order,,,] 227336 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'com.example.order.feign.StockClient' of type [org.springframework.cloud.openfeign.FeignClientFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-04-06 17:27:42.020  INFO [order,,,] 227336 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'spring.cloud.alibaba.seata-io.seata.spring.boot.autoconfigure.properties.SpringCloudAlibabaConfiguration' of type [io.seata.spring.boot.autoconfigure.properties.SpringCloudAlibabaConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-04-06 17:27:42.021  INFO [order,,,] 227336 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'seataProperties' of type [io.seata.spring.boot.autoconfigure.properties.SeataProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-04-06 17:27:42.021  INFO [order,,,] 227336 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'io.seata.spring.boot.autoconfigure.SeataAutoConfiguration' of type [io.seata.spring.boot.autoconfigure.SeataAutoConfiguration$$EnhancerBySpringCGLIB$$8a297559] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-04-06 17:27:42.029  INFO [order,,,] 227336 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'springUtils' of type [io.seata.spring.boot.autoconfigure.util.SpringUtils] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-04-06 17:27:42.029  INFO [order,,,] 227336 --- [  restartedMain] i.s.s.b.a.SeataAutoConfiguration         : Automatically configure Seata
2021-04-06 17:27:42.056  INFO [order,,,] 227336 --- [  restartedMain] io.seata.config.FileConfiguration        : The file name of the operation is registry.conf
2021-04-06 17:27:42.080  INFO [order,,,] 227336 --- [  restartedMain] i.s.common.loader.EnhancedServiceLoader  : load ExtConfigurationProvider[null] extension by class[io.seata.spring.boot.autoconfigure.provider.SpringBootConfigurationProvider]
2021-04-06 17:27:42.087  INFO [order,,,] 227336 --- [  restartedMain] io.seata.config.ConfigurationFactory     : load extConfiguration:FileConfiguration$$EnhancerByCGLIB$$862af1eb
2021-04-06 17:27:42.090  INFO [order,,,] 227336 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'configProperties' of type [io.seata.spring.boot.autoconfigure.properties.registry.ConfigProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-04-06 17:27:42.092  INFO [order,,,] 227336 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'configFileProperties' of type [io.seata.spring.boot.autoconfigure.properties.registry.ConfigFileProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-04-06 17:27:42.093  INFO [order,,,] 227336 --- [  restartedMain] io.seata.config.FileConfiguration        : The file name of the operation is file.conf
2021-04-06 17:27:42.101  INFO [order,,,] 227336 --- [  restartedMain] io.seata.config.ConfigurationFactory     : load extConfiguration:FileConfiguration$$EnhancerByCGLIB$$862af1eb
2021-04-06 17:27:42.103  INFO [order,,,] 227336 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'serviceProperties' of type [io.seata.spring.boot.autoconfigure.properties.file.ServiceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-04-06 17:27:42.104  INFO [order,,,] 227336 --- [  restartedMain] i.s.s.a.GlobalTransactionScanner         : Initializing Global Transaction Clients ... 
2021-04-06 17:27:42.114  WARN [order,,,] 227336 --- [nfigOperate_2_2] io.seata.config.FileConfiguration        : Could not found property transport.thread-factory.boss-thread-prefix, try to use default value instead.
2021-04-06 17:27:42.115  WARN [order,,,] 227336 --- [nfigOperate_2_2] io.seata.config.FileConfiguration        : Could not found property transport.thread-factory.worker-thread-prefix, try to use default value instead.
2021-04-06 17:27:42.115  WARN [order,,,] 227336 --- [nfigOperate_2_2] io.seata.config.FileConfiguration        : Could not found property transport.thread-factory.share-boss-worker, try to use default value instead.
2021-04-06 17:27:42.117  INFO [order,,,] 227336 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'transportProperties' of type [io.seata.spring.boot.autoconfigure.properties.file.TransportProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-04-06 17:27:42.118  WARN [order,,,] 227336 --- [nfigOperate_2_2] io.seata.config.FileConfiguration        : Could not found property transport.thread-factory.worker-thread-size, try to use default value instead.
2021-04-06 17:27:42.175  INFO [order,,,] 227336 --- [  restartedMain] i.s.c.r.netty.AbstractRpcRemotingClient  : RpcClientBootstrap has started
2021-04-06 17:27:42.176  INFO [order,,,] 227336 --- [  restartedMain] i.s.s.a.GlobalTransactionScanner         : Transaction Manager Client is initialized. applicationId[order] txServiceGroup[order-seata-service-group]
2021-04-06 17:27:42.186  INFO [order,,,] 227336 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'clientProperties' of type [io.seata.spring.boot.autoconfigure.properties.file.ClientProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-04-06 17:27:42.186  INFO [order,,,] 227336 --- [  restartedMain] io.seata.rm.datasource.AsyncWorker       : Async Commit Buffer Limit: 10000
2021-04-06 17:27:42.190  INFO [order,,,] 227336 --- [  restartedMain] i.s.c.r.netty.AbstractRpcRemotingClient  : RpcClientBootstrap has started
2021-04-06 17:27:42.191  INFO [order,,,] 227336 --- [  restartedMain] i.s.s.a.GlobalTransactionScanner         : Resource Manager is initialized. applicationId[order] txServiceGroup[order-seata-service-group]
2021-04-06 17:27:42.191  INFO [order,,,] 227336 --- [  restartedMain] i.s.s.a.GlobalTransactionScanner         : Global Transaction Clients are initialized. 
2021-04-06 17:27:42.933  INFO [order,,,] 227336 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2021-04-06 17:27:42.943  INFO [order,,,] 227336 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-04-06 17:27:42.943  INFO [order,,,] 227336 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.33]
2021-04-06 17:27:43.102  INFO [order,,,] 227336 --- [  restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-04-06 17:27:43.103  INFO [order,,,] 227336 --- [  restartedMain] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 2251 ms
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
2021-04-06 17:27:43.695  INFO [order,,,] 227336 --- [  restartedMain] i.s.s.a.GlobalTransactionScanner         : Auto proxy of [dataSource]
2021-04-06 17:27:43.701  INFO [order,,,] 227336 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2021-04-06 17:27:43.704  WARN [order,,,] 227336 --- [  restartedMain] com.zaxxer.hikari.util.DriverDataSource  : Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.
2021-04-06 17:27:44.695  INFO [order,,,] 227336 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2021-04-06 17:27:44.720  INFO [order,,,] 227336 --- [  restartedMain] i.s.c.r.netty.NettyClientChannelManager  : will connect to 127.0.0.1:8091
2021-04-06 17:27:44.721  INFO [order,,,] 227336 --- [  restartedMain] io.seata.core.rpc.netty.RmRpcClient      : RM will register :jdbc:mysql://x.x.x.x:3306/order
2021-04-06 17:27:44.724  INFO [order,,,] 227336 --- [  restartedMain] i.s.core.rpc.netty.NettyPoolableFactory  : NettyPool create channel to transactionRole:RMROLE,address:127.0.0.1:8091,msg:< RegisterRMRequest{resourceIds='jdbc:mysql://x.x.x.x:3306/order', applicationId='order', transactionServiceGroup='order-seata-service-group'} >
2021-04-06 17:27:45.111  INFO [order,,,] 227336 --- [lector_RMROLE_1] i.s.common.loader.EnhancedServiceLoader  : load Codec[SEATA] extension by class[io.seata.codec.seata.SeataCodec]
2021-04-06 17:27:45.164  INFO [order,,,] 227336 --- [  restartedMain] io.seata.core.rpc.netty.RmRpcClient      : register RM success. server version:1.4.0,channel:[id: 0xa6eb6da1, L:/127.0.0.1:63823 - R:/127.0.0.1:8091]
2021-04-06 17:27:45.172  INFO [order,,,] 227336 --- [  restartedMain] i.s.core.rpc.netty.NettyPoolableFactory  : register success, cost 93 ms, version:1.4.0,role:RMROLE,channel:[id: 0xa6eb6da1, L:/127.0.0.1:63823 - R:/127.0.0.1:8091]
2021-04-06 17:27:45.418  INFO [order,,,] 227336 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2021-04-06 17:27:45.545  INFO [order,,,] 227336 --- [  restartedMain] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.4.12.Final
2021-04-06 17:27:45.743  INFO [order,,,] 227336 --- [  restartedMain] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
2021-04-06 17:27:46.025  INFO [order,,,] 227336 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL57Dialect
2021-04-06 17:27:46.785  INFO [order,,,] 227336 --- [  restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2021-04-06 17:27:46.794  INFO [order,,,] 227336 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2021-04-06 17:27:47.486  WARN [order,,,] 227336 --- [  restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2021-04-06 17:27:47.591  INFO [order,,,] 227336 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2021-04-06 17:27:47.712  INFO [order,,,] 227336 --- [  restartedMain] i.s.s.a.GlobalTransactionScanner         : Bean[com.example.order.service.impl.OrderServiceImpl] with name [orderServiceImpl] would use interceptor [io.seata.spring.annotation.GlobalTransactionalInterceptor]
2021-04-06 17:27:47.717  INFO [order,,,] 227336 --- [imeoutChecker_1] i.s.c.r.netty.NettyClientChannelManager  : will connect to 127.0.0.1:8091
2021-04-06 17:27:47.718  INFO [order,,,] 227336 --- [imeoutChecker_1] i.s.core.rpc.netty.NettyPoolableFactory  : NettyPool create channel to transactionRole:TMROLE,address:127.0.0.1:8091,msg:< RegisterTMRequest{applicationId='order', transactionServiceGroup='order-seata-service-group'} >
2021-04-06 17:27:47.728  INFO [order,,,] 227336 --- [imeoutChecker_1] i.s.core.rpc.netty.NettyPoolableFactory  : register success, cost 5 ms, version:1.4.0,role:TMROLE,channel:[id: 0x74f4beea, L:/127.0.0.1:63830 - R:/127.0.0.1:8091]
2021-04-06 17:27:47.770  WARN [order,,,] 227336 --- [  restartedMain] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2021-04-06 17:27:47.770  INFO [order,,,] 227336 --- [  restartedMain] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2021-04-06 17:27:47.775  WARN [order,,,] 227336 --- [  restartedMain] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2021-04-06 17:27:47.775  INFO [order,,,] 227336 --- [  restartedMain] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2021-04-06 17:27:48.085  INFO [order,,,] 227336 --- [  restartedMain] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-04-06 17:27:48.365  INFO [order,,,] 227336 --- [  restartedMain] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService 'Nacso-Watch-Task-Scheduler'
2021-04-06 17:27:49.040  INFO [order,,,] 227336 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2021-04-06 17:27:49.316  INFO [order,,,] 227336 --- [  restartedMain] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, DEFAULT_GROUP order 10.118.49.162:8080 register finished
2021-04-06 17:27:49.386  INFO [order,,,] 227336 --- [  restartedMain] com.example.order.OrderApplication       : Started OrderApplication in 9.495 seconds (JVM running for 10.879)
2021-04-06 17:28:52.893  INFO [order,,,] 227336 --- [tch_RMROLE_1_12] i.s.core.rpc.netty.RmMessageListener     : onMessage:UndoLogDeleteRequest{resourceId='jdbc:mysql://x.x.x.x:3306/order', saveDays=7, branchType=AT}

  • Seata-server日志
17:27:33.500  INFO --- [ttyServerNIOWorker_1_2_12] i.s.c.r.n.AbstractNettyRemotingServer    : 127.0.0.1:63746 to server channel inactive.
17:27:33.500  INFO --- [ttyServerNIOWorker_1_2_12] i.s.c.r.n.AbstractNettyRemotingServer    : remove channel:[id: 0x23b12fda, L:/127.0.0.1:8091 ! R:/127.0.0.1:63746]context:RpcContext{applicationId='stock', transactionServiceGroup='stock-seata-service-group', clientId='stock:127.0.0.1:63746', channel=[id: 0x23b12fda, L:/127.0.0.1:8091 ! R:/127.0.0.1:63746], resourceSets=[]}
17:27:45.144  INFO --- [verHandlerThread_1_10_500] i.s.c.r.processor.server.RegRmProcessor  : RM register success,message:RegisterRMRequest{resourceIds='jdbc:mysql://x.x.x.x:3306/order', applicationId='order', transactionServiceGroup='order-seata-service-group'},channel:[id: 0x4a44fd38, L:/127.0.0.1:8091 - R:/127.0.0.1:63823],client version:1.0.0
17:27:47.726  INFO --- [ttyServerNIOWorker_1_6_12] i.s.c.r.processor.server.RegTmProcessor  : TM register success,message:RegisterTMRequest{applicationId='order', transactionServiceGroup='order-seata-service-group'},channel:[id: 0xa9aab22f, L:/127.0.0.1:8091 - R:/127.0.0.1:63830],client version:1.0.0
17:27:51.134  INFO --- [verHandlerThread_1_11_500] i.s.c.r.processor.server.RegRmProcessor  : RM register success,message:RegisterRMRequest{resourceIds='jdbc:mysql://x.x.x.x:3306/stock', applicationId='stock', transactionServiceGroup='stock-seata-service-group'},channel:[id: 0x76beeea2, L:/127.0.0.1:8091 - R:/127.0.0.1:63856],client version:1.0.0
17:27:53.600  INFO --- [ttyServerNIOWorker_1_8_12] i.s.c.r.processor.server.RegTmProcessor  : TM register success,message:RegisterTMRequest{applicationId='stock', transactionServiceGroup='stock-seata-service-group'},channel:[id: 0xe2d82085, L:/127.0.0.1:8091 - R:/127.0.0.1:63861],client version:1.0.0

2.库存中心

  • 基本配置大致一致
  • XidFilter
    获取请求头中的全局事务ID绑定至RootContext中
@Component
public class XidFilter implements Filter {

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        String xid = request.getHeader(RootContext.KEY_XID);
        if (StringUtils.isNotBlank(xid)) {
            RootContext.bind(xid);
        }
        try {
            chain.doFilter(servletRequest, servletResponse);
        } finally {
            RootContext.unbind();
        }
    }

}
  • StockServiceImpl
@Service
public class StockServiceImpl implements StockService {

    private StockMapper stockMapper;

    public StockServiceImpl(StockMapper stockMapper) {
        this.stockMapper = stockMapper;
    }

    @Override
    @Transactional(rollbackFor = TransactionException.class)
    public StockDeductResponseDTO deduct(StockDeductRequestDTO request) {

        StockEntity stockEntity = stockMapper.getOne(request.getGoodsId());
        stockEntity.setQuantity(stockEntity.getQuantity() - request.getCount());
        stockMapper.save(stockEntity);
        return new StockDeductResponseDTO(1);
    }
}

四、测试

1.正确场景

  • order console
2021-04-06 17:33:32.394  INFO [order,,,] 227336 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2021-04-06 17:33:32.395  INFO [order,,,] 227336 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2021-04-06 17:33:32.413  INFO [order,,,] 227336 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 18 ms
2021-04-06 17:33:32.457  INFO [order,6da5b1204c6b5e63,6da5b1204c6b5e63,true] 227336 --- [nio-8080-exec-1] i.s.common.loader.EnhancedServiceLoader  : load ContextCore[null] extension by class[io.seata.core.context.ThreadLocalContextCore]
2021-04-06 17:33:32.461  INFO [order,6da5b1204c6b5e63,6da5b1204c6b5e63,true] 227336 --- [nio-8080-exec-1] i.s.common.loader.EnhancedServiceLoader  : load TransactionManager[null] extension by class[io.seata.tm.DefaultTransactionManager]
2021-04-06 17:33:32.461  INFO [order,6da5b1204c6b5e63,6da5b1204c6b5e63,true] 227336 --- [nio-8080-exec-1] io.seata.tm.TransactionManagerHolder     : TransactionManager Singleton io.seata.tm.DefaultTransactionManager@6a5cd2be
2021-04-06 17:33:32.464  INFO [order,6da5b1204c6b5e63,6da5b1204c6b5e63,true] 227336 --- [nio-8080-exec-1] i.s.common.loader.EnhancedServiceLoader  : load LoadBalance[null] extension by class[io.seata.discovery.loadbalance.RandomLoadBalance]
2021-04-06 17:33:32.623  INFO [order,6da5b1204c6b5e63,6da5b1204c6b5e63,true] 227336 --- [nio-8080-exec-1] i.seata.tm.api.DefaultGlobalTransaction  : Begin new global transaction [10.118.49.162:8091:122752230877700096]
2021-04-06 17:33:34.118  WARN [order,6da5b1204c6b5e63,6da5b1204c6b5e63,true] 227336 --- [nio-8080-exec-1] i.s.common.loader.EnhancedServiceLoader  : load [io.seata.rm.datasource.undo.parser.ProtostuffUndoLogParser] class fail. io/protostuff/runtime/RuntimeEnv
2021-04-06 17:33:34.119  INFO [order,6da5b1204c6b5e63,6da5b1204c6b5e63,true] 227336 --- [nio-8080-exec-1] i.s.common.loader.EnhancedServiceLoader  : load UndoLogParser[jackson] extension by class[io.seata.rm.datasource.undo.parser.JacksonUndoLogParser]
2021-04-06 17:33:35.168  INFO [order,6da5b1204c6b5e63,6da5b1204c6b5e63,true] 227336 --- [nio-8080-exec-1] c.netflix.config.ChainedDynamicProperty  : Flipping property: stock.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2021-04-06 17:33:35.211  INFO [order,6da5b1204c6b5e63,6da5b1204c6b5e63,true] 227336 --- [nio-8080-exec-1] c.netflix.loadbalancer.BaseLoadBalancer  : Client: stock instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=stock,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null
2021-04-06 17:33:35.217  INFO [order,6da5b1204c6b5e63,6da5b1204c6b5e63,true] 227336 --- [nio-8080-exec-1] c.n.l.DynamicServerListLoadBalancer      : Using serverListUpdater PollingServerListUpdater
2021-04-06 17:33:35.346  INFO [order,6da5b1204c6b5e63,6da5b1204c6b5e63,true] 227336 --- [nio-8080-exec-1] c.netflix.config.ChainedDynamicProperty  : Flipping property: stock.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2021-04-06 17:33:35.348  INFO [order,6da5b1204c6b5e63,6da5b1204c6b5e63,true] 227336 --- [nio-8080-exec-1] c.n.l.DynamicServerListLoadBalancer      : DynamicServerListLoadBalancer for client stock initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=stock,current list of Servers=[10.118.49.162:8081],Load balancer stats=Zone stats: {unknown=[Zone:unknown;	Instance count:1;	Active connections count: 0;	Circuit breaker tripped count: 0;	Active connections per server: 0.0;]
},Server stats: [[Server:10.118.49.162:8081;	Zone:UNKNOWN;	Total Requests:0;	Successive connection failure:0;	Total blackout seconds:0;	Last connection made:Thu Jan 01 08:00:00 CST 1970;	First connection made: Thu Jan 01 08:00:00 CST 1970;	Active Connections:0;	total failure count in last (1000) msecs:0;	average resp time:0.0;	90 percentile resp time:0.0;	95 percentile resp time:0.0;	min resp time:0.0;	max resp time:0.0;	stddev resp time:0.0]
]}ServerList:com.alibaba.cloud.nacos.ribbon.NacosServerList@3ceef234
2021-04-06 17:33:36.222  INFO [order,,,] 227336 --- [erListUpdater-0] c.netflix.config.ChainedDynamicProperty  : Flipping property: stock.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2021-04-06 17:33:38.649  INFO [order,6da5b1204c6b5e63,6da5b1204c6b5e63,true] 227336 --- [nio-8080-exec-1] i.seata.tm.api.DefaultGlobalTransaction  : [10.118.49.162:8091:122752230877700096] commit status: Committed
2021-04-06 17:33:39.043  INFO [order,,,] 227336 --- [tch_RMROLE_1_12] i.s.core.rpc.netty.RmMessageListener     : onMessage:xid=10.118.49.162:8091:122752230877700096,branchId=122752235113947137,branchType=AT,resourceId=jdbc:mysql://x.x.x.x:3306/order,applicationData=null
2021-04-06 17:33:39.045  INFO [order,,,] 227336 --- [tch_RMROLE_1_12] io.seata.rm.AbstractRMHandler            : Branch committing: 10.118.49.162:8091:122752230877700096 122752235113947137 jdbc:mysql://x.x.x.x:3306/order null
2021-04-06 17:33:39.046  INFO [order,,,] 227336 --- [tch_RMROLE_1_12] io.seata.rm.AbstractRMHandler            : Branch commit result: PhaseTwo_Committed

  • stock console
2021-04-06 17:33:35.475  INFO [stock,,,] 228144 --- [nio-8081-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2021-04-06 17:33:35.475  INFO [stock,,,] 228144 --- [nio-8081-exec-2] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2021-04-06 17:33:35.489  INFO [stock,,,] 228144 --- [nio-8081-exec-2] o.s.web.servlet.DispatcherServlet        : Completed initialization in 14 ms
2021-04-06 17:33:35.511  INFO [stock,6da5b1204c6b5e63,8cc5733ae6dd43ef,true] 228144 --- [nio-8081-exec-2] i.s.common.loader.EnhancedServiceLoader  : load ContextCore[null] extension by class[io.seata.core.context.ThreadLocalContextCore]
2021-04-06 17:33:36.573  INFO [stock,6da5b1204c6b5e63,8cc5733ae6dd43ef,true] 228144 --- [nio-8081-exec-2] i.s.common.loader.EnhancedServiceLoader  : load LoadBalance[null] extension by class[io.seata.discovery.loadbalance.RandomLoadBalance]
2021-04-06 17:33:37.298  WARN [stock,6da5b1204c6b5e63,8cc5733ae6dd43ef,true] 228144 --- [nio-8081-exec-2] i.s.common.loader.EnhancedServiceLoader  : load [io.seata.rm.datasource.undo.parser.ProtostuffUndoLogParser] class fail. io/protostuff/runtime/RuntimeEnv
2021-04-06 17:33:37.299  INFO [stock,6da5b1204c6b5e63,8cc5733ae6dd43ef,true] 228144 --- [nio-8081-exec-2] i.s.common.loader.EnhancedServiceLoader  : load UndoLogParser[jackson] extension by class[io.seata.rm.datasource.undo.parser.JacksonUndoLogParser]
2021-04-06 17:33:39.358  INFO [stock,,,] 228144 --- [tch_RMROLE_1_12] i.s.core.rpc.netty.RmMessageListener     : onMessage:xid=10.118.49.162:8091:122752230877700096,branchId=122752248430862337,branchType=AT,resourceId=jdbc:mysql://x.x.x.x:3306/stock,applicationData=null
2021-04-06 17:33:39.360  INFO [stock,,,] 228144 --- [tch_RMROLE_1_12] io.seata.rm.AbstractRMHandler            : Branch committing: 10.118.49.162:8091:122752230877700096 122752248430862337 jdbc:mysql://x.x.x.x:3306/stock null
2021-04-06 17:33:39.360  INFO [stock,,,] 228144 --- [tch_RMROLE_1_12] io.seata.rm.AbstractRMHandler            : Branch commit result: PhaseTwo_Committed

2.异常场景

  • order console
2021-04-06 17:38:00.824  INFO [order,0a0f2f836b7d105e,0a0f2f836b7d105e,true] 227336 --- [nio-8080-exec-5] i.seata.tm.api.DefaultGlobalTransaction  : Begin new global transaction [10.118.49.162:8091:122753355781644288]
2021-04-06 17:38:03.315  INFO [order,,,] 227336 --- [tch_RMROLE_1_12] i.s.core.rpc.netty.RmMessageListener     : onMessage:xid=10.118.49.162:8091:122753355781644288,branchId=122753358113677313,branchType=AT,resourceId=jdbc:mysql://x.x.x.x:3306/order,applicationData=null
2021-04-06 17:38:03.316  INFO [order,,,] 227336 --- [tch_RMROLE_1_12] io.seata.rm.AbstractRMHandler            : Branch Rollbacking: 10.118.49.162:8091:122753355781644288 122753358113677313 jdbc:mysql://x.x.x.x:3306/order
2021-04-06 17:38:04.512  INFO [order,,,] 227336 --- [tch_RMROLE_1_12] i.s.r.d.undo.AbstractUndoLogManager      : xid 10.118.49.162:8091:122753355781644288 branch 122753358113677313, undo_log deleted with GlobalFinished
2021-04-06 17:38:04.588  INFO [order,,,] 227336 --- [tch_RMROLE_1_12] io.seata.rm.AbstractRMHandler            : Branch Rollbacked result: PhaseTwo_Rollbacked
2021-04-06 17:38:05.435  INFO [order,0a0f2f836b7d105e,0a0f2f836b7d105e,true] 227336 --- [nio-8080-exec-5] i.seata.tm.api.DefaultGlobalTransaction  : [10.118.49.162:8091:122753355781644288] commit status: Finished
  • stock console
2021-04-06 17:38:02.911 ERROR [stock,0a0f2f836b7d105e,368ecbdb04659ce9,true] 228144 --- [nio-8081-exec-1] c.e.s.interceptor.MyExceptionHandler     : 系统异常. message:Unable to find com.example.stock.entity.StockEntity with id 2
2021-04-06 17:38:02.917  INFO [stock,0a0f2f836b7d105e,368ecbdb04659ce9,true] 228144 --- [nio-8081-exec-1] i.s.common.loader.EnhancedServiceLoader  : load TransactionManager[null] extension by class[io.seata.tm.DefaultTransactionManager]
2021-04-06 17:38:02.917  INFO [stock,0a0f2f836b7d105e,368ecbdb04659ce9,true] 228144 --- [nio-8081-exec-1] io.seata.tm.TransactionManagerHolder     : TransactionManager Singleton io.seata.tm.DefaultTransactionManager@63ff78f0
2021-04-06 17:38:05.356  INFO [stock,0a0f2f836b7d105e,368ecbdb04659ce9,true] 228144 --- [nio-8081-exec-1] i.seata.tm.api.DefaultGlobalTransaction  : [10.118.49.162:8091:122753355781644288] rollback status: Rollbacked
2021-04-06 17:38:05.359  WARN [stock,0a0f2f836b7d105e,368ecbdb04659ce9,true] 228144 --- [nio-8081-exec-1] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [javax.persistence.EntityNotFoundException: Unable to find com.example.stock.entity.StockEntity with id 2]

3. Seata-server log

17:33:32.467  INFO --- [     batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler         : SeataMergeMessage timeout=60000,transactionName=commit(java.lang.Long, java.lang.Long, java.lang.Integer)
,clientIp:127.0.0.1,vgroup:order-seata-service-group
17:33:32.616  INFO --- [verHandlerThread_1_12_500] i.s.s.coordinator.DefaultCoordinator     : Begin new global transaction applicationId: order,transactionServiceGroup: order-seata-service-group, transactionName: commit(java.lang.Long, java.lang.Long, java.lang.Integer),timeout:60000,xid:10.118.49.162:8091:122752230877700096
17:33:33.404  INFO --- [     batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler         : SeataMergeMessage xid=10.118.49.162:8091:122752230877700096,branchType=AT,resourceId=jdbc:mysql://x.x.x.x:3306/order,lockKey=order_tbl:21
,clientIp:127.0.0.1,vgroup:order-seata-service-group
17:33:34.108  INFO --- [verHandlerThread_1_13_500] i.seata.server.coordinator.AbstractCore  : Register branch successfully, xid = 10.118.49.162:8091:122752230877700096, branchId = 122752235113947137, resourceId = jdbc:mysql://x.x.x.x:3306/order ,lockKeys = order_tbl:21
17:33:34.339  INFO --- [     batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler         : SeataMergeMessage xid=10.118.49.162:8091:122752230877700096,branchId=122752235113947137,resourceId=null,status=PhaseOne_Done,applicationData=null
,clientIp:127.0.0.1,vgroup:order-seata-service-group
17:33:34.643  INFO --- [verHandlerThread_1_14_500] i.seata.server.coordinator.AbstractCore  : Report branch status successfully, xid = 10.118.49.162:8091:122752230877700096, branchId = 122752235113947137
17:33:36.578  INFO --- [     batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler         : SeataMergeMessage xid=10.118.49.162:8091:122752230877700096,branchType=AT,resourceId=jdbc:mysql://x.x.x.x:3306/stock,lockKey=stock_tbl:1
,clientIp:127.0.0.1,vgroup:stock-seata-service-group
17:33:37.285  INFO --- [verHandlerThread_1_15_500] i.seata.server.coordinator.AbstractCore  : Register branch successfully, xid = 10.118.49.162:8091:122752230877700096, branchId = 122752248430862337, resourceId = jdbc:mysql://x.x.x.x:3306/stock ,lockKeys = stock_tbl:1
17:33:37.492  INFO --- [     batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler         : SeataMergeMessage xid=10.118.49.162:8091:122752230877700096,branchId=122752248430862337,resourceId=null,status=PhaseOne_Done,applicationData=null
,clientIp:127.0.0.1,vgroup:stock-seata-service-group
17:33:37.821  INFO --- [verHandlerThread_1_16_500] i.seata.server.coordinator.AbstractCore  : Report branch status successfully, xid = 10.118.49.162:8091:122752230877700096, branchId = 122752248430862337
17:33:38.005  INFO --- [     batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler         : SeataMergeMessage xid=10.118.49.162:8091:122752230877700096,extraData=null
,clientIp:127.0.0.1,vgroup:order-seata-service-group
17:33:39.982  INFO --- [      AsyncCommitting_1_1] io.seata.server.coordinator.DefaultCore  : Committing global transaction is successfully done, xid = 10.118.49.162:8091:122752230877700096.
17:38:00.665  INFO --- [     batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler         : SeataMergeMessage timeout=60000,transactionName=commit(java.lang.Long, java.lang.Long, java.lang.Integer)
,clientIp:127.0.0.1,vgroup:order-seata-service-group
17:38:00.823  INFO --- [verHandlerThread_1_20_500] i.s.s.coordinator.DefaultCoordinator     : Begin new global transaction applicationId: order,transactionServiceGroup: order-seata-service-group, transactionName: commit(java.lang.Long, java.lang.Long, java.lang.Integer),timeout:60000,xid:10.118.49.162:8091:122753355781644288
17:38:01.145  INFO --- [     batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler         : SeataMergeMessage xid=10.118.49.162:8091:122753355781644288,branchType=AT,resourceId=jdbc:mysql://x.x.x.x:3306/order,lockKey=order_tbl:22
,clientIp:127.0.0.1,vgroup:order-seata-service-group
17:38:01.830  INFO --- [verHandlerThread_1_21_500] i.seata.server.coordinator.AbstractCore  : Register branch successfully, xid = 10.118.49.162:8091:122753355781644288, branchId = 122753358113677313, resourceId = jdbc:mysql://x.x.x.x:3306/order ,lockKeys = order_tbl:22
17:38:02.000  INFO --- [     batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler         : SeataMergeMessage xid=10.118.49.162:8091:122753355781644288,branchId=122753358113677313,resourceId=null,status=PhaseOne_Done,applicationData=null
,clientIp:127.0.0.1,vgroup:order-seata-service-group
17:38:02.296  INFO --- [verHandlerThread_1_22_500] i.seata.server.coordinator.AbstractCore  : Report branch status successfully, xid = 10.118.49.162:8091:122753355781644288, branchId = 122753358113677313
17:38:02.920  INFO --- [     batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler         : SeataMergeMessage xid=10.118.49.162:8091:122753355781644288,extraData=null
,clientIp:127.0.0.1,vgroup:stock-seata-service-group
17:38:04.891  INFO --- [verHandlerThread_1_23_500] io.seata.server.coordinator.DefaultCore  : Rollback branch transaction successfully, xid = 10.118.49.162:8091:122753355781644288 branchId = 122753358113677313
17:38:05.353  INFO --- [verHandlerThread_1_23_500] io.seata.server.coordinator.DefaultCore  : Rollback global transaction successfully, xid = 10.118.49.162:8091:122753355781644288.
17:38:05.362  INFO --- [     batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler         : SeataMergeMessage xid=10.118.49.162:8091:122753355781644288,extraData=null
,clientIp:127.0.0.1,vgroup:order-seata-service-group
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值