1.在近期学习seata 并搭建和 部署相关环境 在集成 SringCloud 时发现还是有许多问题需要注意 所以特此标注一下 不然要走很多弯路,也避免以后 遇到同样的问题。话不多说直接干
1.环境部署和搭建
在linux 上部署的 也可以 根据需要在 windows 部署。我是在linux 部署的
wget https://github.com/seata/seata/releases/download/v1.4.2/seata-server-1.4.2.tar.gz
下载至文件夹并解压
2.配置文件修改和配置
主要需要修改的文件在 conf 中 的 registry.conf 和 file.conf
修改register.conf 主要是修改注册中心 是想将seata 注册到 nacos 还是哪里
我选的是nacos 配置中心也是 nacos
配置中心这里有个注意的地方 需要在nacos 添加一个这样的配置 里面的 内容直接copy
https://github.com/seata/seata/blob/develop/script/config-center/config.txt
这里的 因为 在 seata 1.4.2 file.conf 没有了 service.vgrouapping.default_tx_group 这些 所以需要自己放到nacos 上面去 但是里面有些内容需要改成自己的比如DB 连接啥的
如下:
3.seata server 启动
上述配置好后 执行 nohup sh seata-server.sh -p 8091 -h 114.132.74.126 >seata.out 2>&1 &
改为自己的host 和 port 就行。看到 Server started, listen port: 8091 就是启动成功了
以上seata 的服务端环境就搭建好了
接下来是 集成springCloud
1.导入相关的pom依赖 网上多有
比较需要注意的是 在nacos 对应服务的配置
seata:
enabled: true
application-id: seata-demo
# 客户端和服务端在同一个事务组
tx-service-group: default_tx_group
# 自动数据源代理
enable-auto-data-source-proxy: true
# 数据源代理模式(分布式事务方案)
data-source-proxy-mode: AT
# 事务群组,配置项值为TC集群名,需要与服务端保持一致
service:
vgroup-mapping:
default_tx_group: default (####---------------------》 这里需要注意这个default_tx_group 是来自 seataServer.properties 的 service.vgroupMapping后面的 要保持一样 也可以自己定义不然无法注册到seata中)
#整合nacos配置中心
config:
type: nacos
nacos:
server-addr: 114.132.75.126:8848
group: SEATA_GROUP
data-id: seataServer.properties
#整合nacos注册中心
registry:
type: nacos
nacos:
server-addr: 114.132.75.126:8848
group: SEATA_GROUP
# 默认TC集群名
cluster: default
# 服务名,与服务端中registry.conf配置要一致
application: seata-server
要判断是否服务注册到seata 看日志 有没有
RM register success,message:RegisterRMRequest
TM register success,message:RegisterTMRequest 打印出来 有就是 服务成功连接到了 seata TC
至此结束 就可以玩seata了
对了 有个小 地方也需要注意 就是seata 版本 客户端和服务端最好还保持一样 不然 会报错:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-seata</artifactId> <version>2021.1</version> <exclusions> <exclusion> <artifactId>seata-spring-boot-starter</artifactId> <groupId>io.seata</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>io.seata</groupId> <artifactId>seata-spring-boot-starter</artifactId> <version>1.4.2</version> </dependency>
我用的 多是 1.4.2的