电商项目——全文检索-ElasticSearch——第一章——中篇
电商项目——商城业务-商品上架——第二章——中篇
电商项目——商城业务-首页——第三章——中篇
电商项目——性能压测——第四章——中篇
电商项目——缓存——第五章——中篇
电商项目——商城业务-检索服务——第六章——中篇
电商项目——商城业务-异步——第七章——中篇
电商项目——商品详情——第八章——中篇
电商项目——认证服务——第九章——中篇
电商项目——购物车——第十章——中篇
电商项目——消息队列——第十一章——中篇
电商项目——订单服务——第十二章——中篇
电商项目——分布式事务——第十三章——中篇
文章目录
1:本地事务在分布式下的问题
@Transactional
@Override
public SubmitOrderResponseVo submitOrder(OrderSubmitVo vo) {
confirmVoThreadLocal.set(vo);
SubmitOrderResponseVo submitOrderResponseVo=new SubmitOrderResponseVo();
//使用拦截器里面的threalocal
MemberRespVo memberRespVo = OrderInterceptor.loginUser.get();
//1:验证令牌【令牌的对比和删除,获取令牌必须保证原子性】
//如果redis调用get方法获取KEYS[1]值,然后它就会返回令牌删除,然后返回0
//0令牌对比不一样就删除失败 1令牌对比删除成功
String script="if redis.call('get',KEYS[1]) == ARGV[1] then return redis.call('del',KEYS[1]) else return 0 end";
String orderToken = vo.getOrderToken();
//原子令牌验证和删除
Long result = redisTemplate.execute(new DefaultRedisScript<Long>(script, Long