版本
spring-cloud-alibaba.version=2.2.1.RELEASE
spring-cloud.version=Hoxton.SR7
seata.version=1.3
nacos.version=1.2.1
https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
由于部分包未支持Seata1.3,所以需要单独指定
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-seata</artifactId><version>2.2.0.RELEASE</version></dependency><dependency><groupId>io.seata</groupId><artifactId>seata-spring-boot-starter</artifactId><version>1.3.0</version><exclusions><exclusion><groupId>com.alibaba</groupId><artifactId>druid</artifactId></exclusion></exclusions></dependency><dependency><groupId>io.seata</groupId><artifactId>seata-all</artifactId><version>1.3.0</version><exclusions><exclusion><groupId>com.alibaba</groupId><artifactId>druid</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
环境准备
Nacos
Seata
数据表:https://github.com/seata/seata/blob/1.2.0/script/server/db/mysql.sql
我使用docker-compose,晚点回补充全部文件
seata-server:image: seataio/seata-server:1.3.0environment:#STORE_MODE: dbSEATA_CONFIG_NAME: file:/seata-server/config/registrySEATA_IP: 10.0.1.103#registry.type: nacosvolumes:- "./seata-server/config:/seata-server/config"ports:- "8091:8091"nacos:image: nacos/nacos-server:1.2.1environment:- PREFER_HOST_MODE=hostname- MODE=standalone- SPRING_DATASOURCE_PLATFORM=mysql- MYSQL_SERVICE_HOST=mysql- MYSQL_SERVICE_DB_NAME=nacos_v12- MYSQL_SERVICE_PORT=3306- MYSQL_SERVICE_USER=nacos- MYSQL_SERVICE_PASSWORD=nacos- NACOS_AUTH_SYSTEM_TYPE=mysql- JAVA_OPT=-Dnacos.core.auth.enabled=true -Dnacos.core.auth.system.type=nacosvolumes:- ./nacos/logs:/home/nacos/logs- ./nacos/init.d/custom.properties:/home/nacos/init.d/custom.propertiesports:- "8848:8848"depends_on:- mysql
数据准备
Nacos
创建namespace=test,创建用户username=test,password=test2020,注意授权为读写状态(需要同步Seata-server的配置文件)
Seata-Server
配置registry.conf ```java registry { type = “nacos”
nacos { application = “seata-server” serverAddr = “10.0.1.103:8848” namespace = “test” cluster = “default” username = “test” password = “test2020” } file { name = “file:/seata-server/config/file.conf” } }
config { type = “nacos”
nacos { serverAddr = “10.0.1.103:8848” namespace = “test” group = “SEATA_GROUP” username = “test” password = “test2020” }
file { name = “file:/seata-server/config/file.conf” } }
同步配置到Nacos(可以参考官网)<a name="fn0CD"></a>## SpringCloud应用配置**特别注意:应用中的配置需要和seata-server启动配置registry.conf需要保持一致**<br />bootstrap.properties```javaspring.application.name=app-api#spring.profiles.active=dev#spring.cloud.nacos.username=testspring.cloud.nacos.password=test2020spring.cloud.nacos.config.server-addr=10.0.1.103:8848spring.cloud.nacos.discovery.server-addr=10.0.1.103:8848spring.cloud.nacos.config.file-extension=ymlspring.cloud.nacos.config.group=DEFAULT_GROUPspring.cloud.nacos.config.namespace=testspring.cloud.nacos.discovery.namespace=test
在Nacos增加配置
由于指定spring.profiles.active=dev,所以dataId=app-api-dev.yml
seata:enabled: trueapplication-id: applicationNametx-service-group: my_test_tx_groupenable-auto-data-source-proxy: false #一定要是falseservice:vgroup-mapping:my_test_tx_group: default #key与上面的tx-service-group的值对应# config和registry中的信息与register.conf中配置保持一致config:type: nacosnacos:serverAddr: 10.0.1.103:8848namespace: testgroup: SEATA_GROUPusername: testpassword: test2020registry:type: nacosnacos: #这里配置的是seata-server的注册信息application: seata-serverserverAddr: 10.0.1.103:8848namespace: testgroup: DEFAULT_GROUPcluster: defaultusername: testpassword: test2020
踩坑
docker未指定IP,导致应用无法连接
docker 指定运行参数 SEATA_IP: 10.0.1.103
配置版本名称变更
1.0.0 版本配置项seata.service.grouplist 在1.1.0 更改为:seata.service.grouplist.default其中 default 代表 seata注册服务名。
seata.service.grouplist.default内容为seata-server服务的地址,例如
10.0.1.103:8091
