docker安装nacos
[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
## 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
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
[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参数