提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
搭建环境搭建失败的可以看这篇文章,理论篇自己csdn
一、搭建注意点
我自己整合spring的时候最大的问题是引入pom,和启动配置
seata配置的事务组 无法和spring对应.
二、下载seata
1.连接 seata下载地址
2 配置seata
1 本地配置
进入${seata}/conf 修改 application.yml ,具体可以参考同级目录下的application.example.yml(切记不要直接覆盖application.yml, application.yml会比参考文件多出一些参数 我就是因为这样搞了半天)
我的配置如下:
#放在 ${seata}/conf目录下
server:
port: 7091
spring:
application:
name: seata-server
logging:
config: classpath:logback-spring.xml
file:
path: ${user.home}/logs/seata
extend:
logstash-appender:
destination: 127.0.0.1:4560
kafka-appender:
bootstrap-servers: 127.0.0.1:9092
topic: logback_to_logstash
console:
user:
username: seata
password: seata
seata:
config:
# support: nacos 、 consul 、 apollo 、 zk 、 etcd3
type: nacos
nacos:
server-addr: http://127.0.0.1:8848
# namespace: 7392baed-d98b-48a4-8676-34e1b38eade6
namespace:
group: SEATA_GROUP
username:
password:
##if use MSE Nacos with auth, mutex with username/password attribute
#access-key: ""
#secret-key: ""
data-id: seataServer.properties
registry:
# support: nacos 、 eureka 、 redis 、 zk 、 consul 、 etcd3 、 sofa
type: nacos
preferred-networks: 30.240.*
nacos:
application: seata-server
server-addr: http://127.0.0.1:8848
group: SEATA_GROUP
namespace:
# namespace: 7392baed-d98b-48a4-8676-34e1b38eade6
cluster: default
username:
password:
##if use MSE Nacos with auth, mutex with username/password attribute
#access-key: ""
#secret-key: ""
security:
secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
tokenValidityInMilliseconds: 1800000
ignore:
urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login
2 nacos配置中心配置
namespace: SEATA_GROUP
group: public
Data ID: seataServer.properties
# 存储模式
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
# 需要根据mysql的版本调整driverClassName
# mysql8及以上版本对应的driver:com.mysql.cj.jdbc.Driver
# mysql8以下版本的driver:com.mysql.jdbc.Driver
store.db.driverClassName=com.mysql.cj.jdbc.Driver
# 注意根据生产实际情况调整参数host和port
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
# 数据库用户名
store.db.user=root
# 用户名密码
store.db.password=123456
# 微服务里配置与这里一致
service.vgroupMapping.order_tx_group=default
service.vgroupMapping.storage_tx_group=default
service.vgroupMapping.account_tx_group=default
3 创建sql文件
seata的数据库文件
${seata}\script\server\db\mysql.sql
4 启动seata
先启动nacos 再启动seata
都启动之后查看nacos配置中心的文件是否被引用,未被引用就是上面配置出错了
查看服务列表是否有此服务
上面两个文件都有信息表示配置启动成功 访问页面即可
7091为seata端口
http://localhost:7091 进入页面查看 用户名密码均为 seata
三、 整合springboot
1 基本信息
官方提供了两种jar包
spring-cloud-starter-alibaba-seata和seata-spring-boot-start.
spring-cloud-starter-alibaba-seata中包含了seata-spring-boot-start
所以本次采用spring-cloud-starter-alibaba-seata。
如果只使用seata-spring-boot-start会有些小问题,比如 seata的xid需要手动传入等…
可能单纯是我菜的原因吧
2 配置
本次测试将使用三个服务
分别为 A B C 。 A调用B和C
A=>B
A=>C
1 导包
防止cloud版本和seata版本不一致,排除spring自带的seata版本,引入和seata对应的版本
<!-- 网上好多都是排除seata-all这个包,但是我运行起来总是报错,不知道什么原因
<groupId>io.seata</groupId>
<artifactId>seata-all</artifactId>
-->
<!--seata-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<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.5.2</version>
</dependency>
2. yml配置
server:
port: 2001
seata:
tx-service-group: order_tx_group #这里每个服务都是对应不同的映射名,在配置中心可以看到
registry:
type: nacos
nacos:
server-addr: http://127.0.0.1:8848
group: SEATA_GROUP
service:
vgroup-mapping:
#这里也要注意 key为映射名,
order_tx_group: default
spring:
application:
name: seata-order-service
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
group: SEATA_GROUP
datasource:
druid:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/seata_order?serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
# 初始化配置
initial-size: 3
# 最小连接数
min-idle: 3
# 最大连接数
max-active: 15
# 获取连接超时时间
max-wait: 5000
break-after-acquire-failure: true
connection-error-retry-attempts: 3
# 连接有效性检测时间
time-between-eviction-runs-millis: 90000
# 最大空闲时间
min-evictable-idle-time-millis: 1800000
test-while-idle: true
test-on-borrow: false
test-on-return: false
validation-query: select 1
# 配置监控统计拦截的filters
filters: stat
stat-view-servlet:
url-pattern: /druid/*
reset-enable: false
login-username: admin
login-password: admin
allow: 127.0.0.1
enabled: true #默认值为true,即打开监控页面,但存在泄漏信息的风险,所以修改为false
web-stat-filter:
url-pattern: /*
exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
logging:
level:
io:
seata: info
四、 代码地址
gitee: https://gitee.com/sun-jiafan/seata151.git
包含seata配置文件sql文件java代码
总结
就写东西 搞了两三天,m******d
技术交流wx: