# seata-sample **Repository Path**: liuyu2783/seata-sample ## Basic Information - **Project Name**: seata-sample - **Description**: springboot + seata + mybatisplus - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-12-02 - **Last Updated**: 2022-03-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## docker安装nacos ```sh [root@iZ2zegjlrhr7fupkuelr9fZ ~]docker pull nacos/nacos-server [root@iZ2zegjlrhr7fupkuelr9fZ ~]docker run -d --name nacos -p 28999:8848 --env MODE=standalone nacos/nacos-server ``` 安装完成访问:http://10.26.2.86:28999/nacos/index.html 默认密码:nacos/nacos ## docker安装seata 在/usr/local/seata_1.4.2/conf目录下创建配置文件 file.conf ```properties ## transaction log store, only used in seata-server store { ## store mode: file、db、redis mode = "db" ## database store property db { ## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc. datasource = "druid" ## mysql/oracle/postgresql/h2/oceanbase etc. dbType = "mysql" driverClassName = "com.mysql.jdbc.Driver" url = "jdbc:mysql://10.26.2.86:3306/seata?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai" user = "root" password = "asdw@123" minConn = 5 maxConn = 100 globalTable = "global_table" branchTable = "branch_table" lockTable = "lock_table" queryLimit = 100 maxWait = 5000 } } ``` registry.conf ```properties registry { #seata 的注册中心使用nacos 还可以使用eureka等 type = "nacos" nacos { #seata server名字 application = "seata-server" #注册中心地址 现在是nacos serverAddr = "10.26.2.86:8848" #分组名 group = "SEATA_GROUP" #集群名称 默认default cluster = "default" } } config { #seata 的配置中心使用nacos 还可以使用file本地配置等 type = "file" file { name = "file:/usr/local/seata_1.4.2/conf/file.conf" } } ``` 启动docker ```sh [root@iZ2zegjlrhr7fupkuelr9fZ ~]# docker pull seataio/seata-server:1.4.2 [root@iZ2zegjlrhr7fupkuelr9fZ seata_1.4.2]# docker run --name seata -d \ > -e SEATA_IP=10.26.2.86 \ > -e SEATA_PORT=8091 \ > -v /usr/local/seata_1.4.2/conf/registry.conf:/seata-server/resources/registry.conf \ > -v /usr/local/seata_1.4.2/logs:/root/logs \ > --privileged=true \ > -p 8091:8091 \ > seataio/seata-server:1.4.2 ``` ## seata1.4.2 集成openfeign不能回滚的问题 在一般情况如: A服务调用B服务且A服务调用C服务,即A-B & A-C这种服务调用链路,当其中任意一个服务报错,事务是可以回滚的。 **但是** A -> B -> C,这种调用链路,seata就不会回滚了!! ### 解决办法 1、首先确保你引入了`spring-cloud-starter-alibaba-seata`的依赖. 2、如果xid还无法传递,请确认你是否实现了WebMvcConfigurer,如果是,请参考com.alibaba.cloud.seata.web.SeataHandlerInterceptorConfiguration#addInterceptors的方法.把SeataHandlerInterceptor加入到你的拦截链路中. 3、在调用方新增配置,手动在header添加xid参数