Seata与Spring Cloud Circuit Breaker熔断器 不兼容,一起使用时Seata分布式功能失效
seata-samples中
springcloud-jpa-seata列子中添加Spring Cloud Circuit Breaker 熔断器后,导致Seata分布式事务功能失效 (该demo中添加熔断器后的代码可直接见此处) 添加熔断操作如下:
1.pom文件中升级spring boot 与spring cloud版本(Spring Cloud Circuit Breaker 在springcloud Hoxton版本才能使用 )
`<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>`
2.在business-service 中引入添加Spring Cloud Circuit Breaker 及其实现 resilience4j依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId> </dependency>
3.禁用默认熔断feign.hystrix.enabled=false,在business-service io.seata.sample.service.BusinessService.class中添加熔断器
` @Service public class BusinessService {
@Autowired
private StorageFeignClient storageFeignClient;
@Autowired
private OrderFeignClient orderFeignClient;
@Autowired
private CircuitBreakerFactory cbFactory;
/**
* 减库存,下订单
*
* @param userId
* @param commodityCode
* @param orderCount
*/
@GlobalTransactional
public void purchase(String userId, String commodityCode, int orderCount) {
cbFactory.create("CircuitBreakerName_storage").run(
new Supplier<Boolean>() {
@Override
public Boolean get() {
storageFeignClient.deduct(commodityCode, orderCount);
orderFeignClient.create(userId, commodityCode, orderCount);
return true;
}
}
);
}
}` 添加熔断后发现@GlobalTransactional注解失效了,无法进行全局事务的回滚。是不是seata与
Spring Cloud Circuit Breaker熔断不兼容?
兄弟你这个问题解决了吗?我最近在最新1.4.2版本上测试也发现了问题。使用resilience4j作为feign的降级依赖,不过问题和你相反,事务生效,但是服务无法降级。
兄弟你这个问题解决了吗?我最近在最新1.4.2版本上测试也发现了问题。使用resilience4j作为feign的降级依赖,不过问题和你相反,事务生效,但是服务无法降级。
大哥,你这个问题咋解决的?我用的高版本也这样,我现在用的seata1.7版本的也是事务生效,服务不降级
请问这个bug什么时候能修复