SpringCloudAlibaba基础七-2 seata的使用
在Spring Cloud Alibaba基础之上使用Seata进行分布式事务管理,需要以下步骤:
- 引入Seata相关依赖。
- 配置Seata服务器地址和应用名。
- 定义全局事务。
以下是一个简化的示例:
- 在
pom.xml
中添加Seata依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
- 在
application.yml
中配置Seata:
spring:
cloud:
alibaba:
seata:
tx-service-group: my_tx_group
service:
grouplist:
default: localhost:8091
- 在业务代码中使用
@GlobalTransactional
注解:
import io.seata.spring.annotation.GlobalTransactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.transaction.annotation.Transactional;
@RestController
public class OrderController {
@Autowired
private OrderService orderService;
@Autowired
private StorageService storageService;
@RequestMapping("/createOrder")
@GlobalTransactional
public void createOrder() {
orderService.createOrder();
storageService.deductStorage();
}
}
class OrderService {
@Transactional
public void createOrder() {
// 创建订单的逻辑
}
}
class StorageService {
@Transactional
public void deductStorage() {
// 扣减库存的逻辑
}
}
在上述示例中,createOrder
方法被@GlobalTransactional
注解标记,这意味着它将作为一个全局事务参与分布式事务管理。在这个方法内部,调用了orderService.createOrder()
和storageService.deductStorage()
两个本地事务方法。如果任一方法执行失败,整个全局事务将会回滚。
评论已关闭