Spring Cloud Alibaba 2.2.0使用的多么
时间: 2024-05-29 10:09:39 浏览: 87
Spring Cloud Alibaba 2.2.0是一个相对较新的版本,于2020年11月发布。它引入了一些新的功能和改进,例如:
1. 支持Nacos 2.0和Sentinel 1.8版本。
2. 引入了新的Spring Cloud Alibaba Dubbo和RocketMQ Starter,使得使用Dubbo和RocketMQ变得更加容易。
3. 新增了Alibaba Cloud ACM配置中心的支持。
4. 增强了对Spring Cloud Gateway的支持,提供了更多的自定义选项。
5. 改进了Spring Cloud Alibaba的性能和稳定性。
总的来说,Spring Cloud Alibaba 2.2.0是一个可靠的版本,包含了一些新的功能和改进。如果你正在使用Spring Cloud Alibaba,建议升级到这个版本以获得最好的体验。
相关问题
springboot + springcloud alibaba seata 使用TCC模式代码模板
以下是一个使用Spring Boot和Spring Cloud Alibaba Seata框架实现的TCC模式代码模板:
1. 创建一个Spring Boot项目,添加依赖:
```xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
```
2. 配置Seata相关信息:
```yaml
spring:
application:
name: tcc-demo
seata:
enabled: true
application-id: ${spring.application.name}
tx-service-group: my_tx_group
service:
vgroup-mapping.my_tx_group: default
config:
type: nacos
nacos:
server-addr: localhost:8848
namespace: public
registry:
type: nacos
nacos:
server-addr: localhost:8848
namespace: public
storage:
type: db
db:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/seata?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
```
3. 创建一个TCC接口:
```java
public interface TccService {
@TccTransaction(confirmMethod = "confirm", cancelMethod = "cancel")
boolean tryMethod(String businessKey, String param);
boolean confirm(String businessKey, String param);
boolean cancel(String businessKey, String param);
}
```
4. 实现TCC接口:
```java
@Service
public class TccServiceImpl implements TccService {
@Resource
private TccMapper tccMapper;
@Override
public boolean tryMethod(String businessKey, String param) {
TccEntity tccEntity = new TccEntity();
tccEntity.setBusinessKey(businessKey);
tccEntity.setParam(param);
return tccMapper.insert(tccEntity) > 0;
}
@Override
public boolean confirm(String businessKey, String param) {
return true;
}
@Override
public boolean cancel(String businessKey, String param) {
return tccMapper.deleteByBusinessKey(businessKey) > 0;
}
}
```
5. 配置TCC事务管理器:
```java
@Configuration
public class SeataConfiguration {
@Bean
public GlobalTransactionScanner globalTransactionScanner() {
return new GlobalTransactionScanner("tcc-demo", "my_tx_group");
}
@Bean
public TccTransactionAspect tccTransactionAspect() {
return new TccTransactionAspect();
}
@Bean
public DataSourceProxy dataSourceProxy(DataSource dataSource) {
return new DataSourceProxy(dataSource);
}
}
```
6. 测试TCC接口:
```java
@RestController
@RequestMapping("/tcc")
public class TccController {
@Resource
private TccService tccService;
@PostMapping("/try")
public boolean tryMethod(@RequestParam String businessKey, @RequestParam String param) {
return tccService.tryMethod(businessKey, param);
}
}
```
以上是一个简单的TCC模式代码模板,可以根据实际业务需求进行修改和扩展。
如何在Spring Cloud Alibaba中使用Seata进行分布式事务?
在Spring Cloud Alibaba中使用Seata进行分布式事务,需要进行以下步骤:
1. 引入Seata依赖
在pom.xml文件中引入Seata的依赖:
```
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
```
2. 配置Seata
在application.yml文件中配置Seata的相关参数,包括:
- 服务端配置
```
spring:
cloud:
alibaba:
seata:
tx-service-group: my_test_tx_group # Seata事务组名称
service:
vgroup-mapping:
my_test_tx_group: default # Seata服务组名称
group-id: default # Seata服务分组ID
config:
type: file # Seata配置类型
file:
name: file.conf # Seata配置文件名称
path: /seata/config # Seata配置文件路径
```
- 客户端配置
```
mybatis:
configuration:
# 启用二级缓存
cache-enabled: true
# 数据源配置
type-aliases-package: com.example.demo.entity
mapper-locations: classpath:mapper/*.xml
configuration-properties:
# 自动驼峰转换
mapUnderscoreToCamelCase: true
# 数据库连接池配置
druid:
url: jdbc:mysql://localhost:3306/seata?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
# Seata配置
seata:
enabled: true # 启用Seata
application-id: seata-demo # 应用ID
tx-service-group: my_test_tx_group # Seata事务组名称
service:
vgroup-mapping:
my_test_tx_group: default # Seata服务组名称
# 注册中心配置
registry:
type: nacos # 注册中心类型
nacos:
server-addr: localhost:8848 # 注册中心地址
namespace: public
group: SEATA_GROUP
file:
name: file.conf # 注册中心配置文件名称
path: /seata/config # 注册中心配置文件路径
```
3. 配置数据源
在application.yml文件中配置数据源,包括:
```
spring:
datasource:
url: jdbc:mysql://localhost:3306/seata?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
```
4. 配置Seata代理数据源
在Spring Boot启动类中配置Seata代理数据源:
```
@SpringBootApplication
@EnableDiscoveryClient
@MapperScan("com.example.demo.mapper")
@EnableFeignClients(basePackages = "com.example.demo.feign")
@EnableTransactionManagement
public class SeataDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SeataDemoApplication.class, args);
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
return new DruidDataSource();
}
@Bean
public DataSourceProxy dataSourceProxy(DataSource dataSource) {
return new DataSourceProxy(dataSource);
}
@Bean
public GlobalTransactionScanner globalTransactionScanner() {
return new GlobalTransactionScanner("seata-demo", "my_test_tx_group");
}
}
```
5. 编写业务代码
在业务代码中使用@GlobalTransactional注解标记需要参与分布式事务的方法,例如:
```
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Autowired
private OrderFeignClient orderFeignClient;
@Override
@GlobalTransactional
public void createOrder(User user) {
userMapper.insert(user);
orderFeignClient.createOrder(user.getId());
}
}
```
以上就是在Spring Cloud Alibaba中使用Seata进行分布式事务的步骤。
阅读全文