seata 1.6.1版本 tcc模式 FeignClient调用示例
时间: 2023-08-07 22:04:19 浏览: 48
使用RestTemplate进行feignclient调用
下面是一个使用FeignClient调用TCC模式下分布式事务的示例:
1. 首先,在pom.xml文件中添加Feign和Seata的依赖:
```xml
<dependencies>
<!-- Seata -->
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-all</artifactId>
<version>1.6.1</version>
</dependency>
<!-- Feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
</dependencies>
```
2. 在启动类上添加@EnableFeignClients注解启用FeignClient:
```java
@SpringBootApplication
@EnableFeignClients
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
3. 创建FeignClient接口,并使用@LocalTCC注解标记TCC模式下的方法:
```java
@FeignClient(name = "order-service")
public interface OrderServiceClient {
@RequestMapping(value = "/order/create", method = RequestMethod.POST)
@LocalTCC
Boolean createOrder(Order order);
}
```
4. 在业务逻辑中调用FeignClient:
```java
@Service
public class BusinessService {
@Autowired
private OrderServiceClient orderServiceClient;
@GlobalTransactional
public void createOrder(Order order) {
orderServiceClient.createOrder(order);
}
}
```
在上述代码中,@GlobalTransactional注解表示开启了一个全局事务,如果业务逻辑执行失败,Seata框架会回滚之前的所有操作。同时,业务逻辑中调用了FeignClient的createOrder方法,该方法被@LocalTCC注解标记,表示使用TCC模式处理分布式事务。
上述示例中的OrderServiceClient是一个FeignClient接口,其调用的服务名为order-service,对应的服务需要在Seata中注册为一个TC服务,同时需要在该服务的配置文件中添加Seata的相关配置,以支持TCC模式下的分布式事务。
阅读全文