seata-samples
seata-samples copied to clipboard
undo_log不写日志,抛异常不会回滚?
Spring Cloud Eureka + Feign + Mybatis
Spring Boot version 2.1.2.RELEASE Spring Cloud version Greenwich.RELEASE Seata version 1.1.0
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-seata</artifactId>
<version>2.1.0.RELEASE</version>
<exclusions>
<exclusion>
<artifactId>seata-all</artifactId>
<groupId>io.seata</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-all</artifactId>
<version>1.1.0</version>
</dependency>
business-server服务
@Override
@GlobalTransactional
public void purchase(String userId, String commodityCode, Integer count) {
// 减库存
storageServiceClient.deduct(commodityCode, count);
// 创建订单
orderServiceClient.create(userId, commodityCode, count);
}
order-server服务
@Override
public boolean create(String userId, String commodityCode, Integer count) {
// 计算订单金额
final BigDecimal orderMoney = calculate(commodityCode, count);
// 支付
accountServiceClient.debit(userId, orderMoney);
// 保存订单
OrderDTO orderDTO = new OrderDTO();
orderDTO.setUserId(userId);
orderDTO.setOrderNo(UUID.randomUUID().toString().replace("-", ""));
orderDTO.setCommodityCode(commodityCode);
orderDTO.setCount(count);
orderDTO.setMoney(orderMoney);
return orderMapper.insert(orderDTO);
}
account-server服务
@Override
public void debit(String userId, BigDecimal orderMoney) {
// 查余额
BigDecimal money = accountMapper.queryMoney(userId);
if (money.compareTo(orderMoney) < 0) {
try {
throw new Exception("余额不足");
} catch (Exception e) {
e.printStackTrace();
}
} else {
// 扣钱
accountMapper.debit(userId, orderMoney);
}
}
-
抛异常不会回滚 余额不足抛异常,还是扣了库存,保存了订单
-
undo_log不写日志,没数据
2020-03-27 10:52:28.873 WARN 8516 --- [nio-9094-exec-4] c.a.c.seata.web.SeataHandlerInterceptor : xid in change during RPC from 192.168.160.128:8091:2039003107 to null
- 有时会出现如下异常
io.seata.core.exception.RmTransactionException: Response[ TransactionException[Could not register branch into global session xid = 192.168.160.128:8091:2039003036 status = AsyncCommittin ]
遇到同样的问题
遇到同样的问题
他try了阿。异常捕获了阿。