author:zxw
email:502513206@qq.com
@ Jishou University
1.前言
之前一直使用的是seata+eureka的方式来使用,最近自己在家的时候忽然想用nacos来试试,毕竟之前没怎么用过。使用后发现和eureka的用法还是差别蛮大的,折腾了一天才把项目跑起来,以此来记录下使用方法。
2.使用
在使用前当然得先下载相关的包,这边说下我使用的版本
nacos
:https://gitee.com/mirrors/Nacos?_from=gitee_search 我是直接通过源码构建启动的,直接拉的develop分支代码
seata
:https://github.com/seata/seata/releases/tag/v1.4.0 使用的1.4版本
在使用前我们先把源码中的脚本拷贝到seata-server的目录中,config.txt放在seata根目录下,其余两个放在conf目录中,然后在conf目录中执行下面的命令sh nacos-config.sh hosti*
(需要先启动nacos)这样就会将配置加入到nacos的配置中心里。
加入成功后,打开nacos的配置中心可以看到如下配置
接着我们打开seata-server的conf目录中的registry.conf文件和file.conf文件修改几处配置
registry.conf:把两处的type修改为nacos就ok了
registry{
type = "nacos"
}
config{
type = "nacos"
}
file.conf:这边可以根据自身情况选择存储方式,这里我使用的db
store {
## store mode: file、db、redis
mode = "db"
}
然后进入bin目录,直接双击seata-server.bat启动,然后就可以在nacos的注册列表中找到seata-server节点。
接着就是我们自己的项目工程了,首先引入我们nacos和seata的maven,下面是我使用的maven配置,比较要注意的一个点就是seata-spring-boot-starter的版本要为1.3,之前用的1.1死活连不上,换成1.1的以后就连接成功了。
<spring-boot.version>2.3.2.RELEASE</spring-boot.version>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<version>LATEST</version>
<exclusions>
<exclusion>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
然后就是我们的配置文件了,我们之前导入的config.txt里面有个组是my_test_tx_group
这边我们也使用默认的这个组,名字一定要对上不然会连接不上。剩下的其实使用默认的配置就够了,程序启动成功后,查看一下seata的cmd界面,如果连接成功会有显示。
server:
port: 8084
spring:
application:
name: storage
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/fescar?characterEncoding=utf-8&?useSSL=true
driver-class-name: com.mysql.jdbc.Driver
cloud:
alibaba:
seata:
tx-service-group: my_test_tx_group
server-addr: 127.0.0.1:8848
seata:
enabled: true
application-id: storage
tx-service-group: my_test_tx_group #事务组
enable-auto-data-source-proxy: true
config:
type: nacos
nacos:
namespace:
serverAddr: 127.0.0.1:8848
group: SEATA_GROUP
username: "nacos"
password: "nacos"
registry:
type: nacos
nacos:
application: seata-server
server-addr: 127.0.0.1:8848
group: SEATA_GROUP
namespace:
username: "nacos"
password: "nacos"
logging:
level:
org.springframework.cloud.alibaba.seata.web: debug
io.seata: debug
#eureka:
# client:
# service-url:
# defaultZone: http://localhost:10010/eureka
# instance:
# ip-address: 127.0.0.1
# prefer-ip-address: true
下面是我工程的项目地址:https://gitee.com/xiaowei_zxw/transaction-demo (记得点个start)