6月8日

今天主要把order模块完成了
捡主要的写今天我觉得比较重要的包括
1.远程调用还有远程调用的事务问题
2.事务传播机制
3.乐观锁

1.首先就是远程调用啊我用的是webclient正常分布式应该用的是OpenFeign
今天在写一个扣减库存业务时是通过远程调用的fetch方法还有update方法
因为是远程调用所以在创建订单的业务中即使是创建失败了扣减库存也不会回滚
所以远程调用的情况下应该用seata管理事务

2.事务传播机制
今天主要学了REQUIRED还有REQUIRES_NEW两个传播机制
REQUIRED就是如果有事务就加入没有就创建
在创建订单业务中加上@Transaction(peopagation=propagation.REQUIRED)
扣库存和创建订单就是在同一个事务中会一起回滚
如果加上@Transaction(peopagation=propagation.REQUIRES_NEW)
那后面写的插入订单就是新建的事务即使插入失败因为是两个不同的事务所以扣库存也不会回滚
如果是远程调用的话不管用那种传播机制都是相互独立的事务

3mybatis-plus乐观锁
通过检查版本号并且设置新版本号来避免冲突
如果update成功返回的rows是大于0的可以用这个来判断是否更新成功

posted @ 2026-06-08 22:17  千砂  阅读(3)  评论(0)    收藏  举报