springboot + springcloud alibaba seata 配置文件详解
时间: 2023-10-06 14:08:01 浏览: 144
SpringBoot的配置文件
Seata 是阿里巴巴开源的一款分布式事务解决方案,它提供了高性能、易扩展、易集成的分布式事务解决方案,能够帮助我们解决分布式事务问题。
在 Spring Boot 和 Spring Cloud Alibaba 中集成 Seata 需要做以下几步操作:
1. 引入 Seata 的依赖
在 pom.xml 文件中引入 seata-all 的依赖:
```xml
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-all</artifactId>
<version>1.4.2</version>
</dependency>
```
2. 配置 Seata 的注册中心
在 application.properties 或 application.yml 文件中配置 Seata 的注册中心地址:
```yaml
seata:
registry:
type: nacos
nacos:
server-addr: localhost:8848
```
其中,type 表示注册中心的类型,这里设置为 nacos;nacos 表示 Nacos 注册中心的配置信息。
3. 配置 Seata 的事务组名称
在 application.properties 或 application.yml 文件中配置 Seata 的事务组名称:
```yaml
seata:
tx-service-group: my_tx_group
```
其中,tx-service-group 表示事务组名称,可以任意设置。
4. 配置 Seata 的数据源代理
在 application.properties 或 application.yml 文件中配置 Seata 的数据源代理:
```yaml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: 123456
seata:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/seata?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: 123456
enable-auto-data-source-proxy: true
```
其中,datasource 表示业务数据源的配置信息;seata.datasource 表示 Seata 数据源的配置信息;enable-auto-data-source-proxy 表示是否启用数据源代理。
5. 配置 Seata 的代理数据源
在 application.properties 或 application.yml 文件中配置 Seata 的代理数据源:
```yaml
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: 123456
seata:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/seata?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: 123456
enable-auto-data-source-proxy: true
```
其中,type 表示数据源的类型,这里使用的是阿里巴巴的 Druid 数据源。
6. 配置 Seata 的 AT 模式
在 application.properties 或 application.yml 文件中配置 Seata 的 AT 模式:
```yaml
seata:
service:
vgroup-mapping:
my_tx_group: default
group-mapping:
default: fescar-seata-example
default-transaction-timeout: 300000
tx-service-group: my_tx_group
mode: "AT"
config:
# AT 模式下的数据源类型
client.db-type: "mysql"
server:
undo:
log serialization: "json"
log table: "undo_log"
datasource:
datasource: "seataDataSource"
db-type: "mysql"
```
其中,service.vgroup-mapping 表示事务组映射关系;service.group-mapping 表示事务组和注册中心的映射关系;default-transaction-timeout 表示默认的事务超时时间;tx-service-group 表示事务组名称;mode 表示 Seata 的模式,这里使用的是 AT 模式;config.client.db-type 表示 AT 模式下的数据源类型;config.server.undo.log serialization 表示序列化方式;config.server.undo.log table 表示 undo log 表名;config.server.undo.datasource.datasource 表示 undo log 数据源名称;config.server.undo.datasource.db-type 表示 undo log 数据源类型。
7. 配置 Seata 的 TC 模式
在 application.properties 或 application.yml 文件中配置 Seata 的 TC 模式:
```yaml
seata:
service:
vgroup-mapping:
my_tx_group: default
group-mapping:
default: fescar-seata-example
default-transaction-timeout: 300000
tx-service-group: my_tx_group
mode: "TC"
config:
server:
port: 8091
max-commit-retry-timeout: 120000
max-rollback-retry-timeout: 120000
```
其中,server.port 表示 TC 模式下的端口号;config.server.max-commit-retry-timeout 表示最大提交重试时间;config.server.max-rollback-retry-timeout 表示最大回滚重试时间。
以上就是在 Spring Boot 和 Spring Cloud Alibaba 中集成 Seata 的详细配置步骤。
阅读全文