springboot+zk+seata+dubbo 详细配置
时间: 2023-06-28 10:08:27 浏览: 140
将 Spring Boot、Zookeeper、Seata 和 Dubbo 集成在一起可以帮助我们构建分布式事务应用程序。在这里,我将为您提供一些配置步骤:
1. 配置 Zookeeper
在 pom.xml 文件中添加以下依赖项:
```xml
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>5.1.0</version>
</dependency>
```
在 application.properties 文件中添加以下配置:
```properties
spring.cloud.zookeeper.connect-string=localhost:2181
```
2. 配置 Seata
在 pom.xml 文件中添加以下依赖项:
```xml
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-all</artifactId>
<version>1.4.2</version>
</dependency>
```
在 application.properties 文件中添加以下配置:
```properties
# Seata配置
seata.tx-service-group=my_test_tx_group
spring.cloud.alibaba.seata.tx-service-group=my_test_tx_group
spring.cloud.alibaba.seata.enabled=true
spring.cloud.alibaba.seata.application-id=seata-dubbo-demo
spring.cloud.alibaba.seata.tx-service-group=my_test_tx_group
mybatis.configuration.map-underscore-to-camel-case=true
```
3. 配置 Dubbo
在 pom.xml 文件中添加以下依赖项:
```xml
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
```
在 application.properties 文件中添加以下配置:
```properties
# Dubbo配置
spring.dubbo.application.name=seata-dubbo-demo
spring.dubbo.registry.address=zookeeper://localhost:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan.base-packages=com.example.demo.service
```
4. 配置数据源
在 pom.xml 文件中添加以下依赖项:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
```
在 application.properties 文件中添加以下配置:
```properties
# 数据库配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/seata?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
```
5. 配置 MyBatis
在 pom.xml 文件中添加以下依赖项:
```xml
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
```
在 application.properties 文件中添加以下配置:
```properties
# MyBatis配置
mybatis.mapper-locations=classpath:mapper/*.xml
```
6. 编写业务代码
在业务代码中,我们需要使用 @GlobalTransactional 注解来标记全局事务。
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@DubboReference
private AccountService accountService;
@Override
@GlobalTransactional
public void buy(String userId, String productId, int count) {
// 扣减账户金额
accountService.decrease(productId, count * 10);
// 扣减库存数量
userMapper.decrease(userId, count);
// throw new RuntimeException("测试 Seata 分布式事务回滚");
}
}
```
这就是 Spring Boot、Zookeeper、Seata 和 Dubbo 集成的详细配置步骤。
阅读全文