当前位置: 首页 > news >正文

自己做的网站如何上传文件百度广告价格

自己做的网站如何上传文件,百度广告价格,网络规划师报名时间,nba网站制作目录 概述 使用 依赖与配置 代码 概述 TCC 模式是一种侵入式的分布式事务解决方案,它不依赖于数据库的事务,而是要求开发者自定义完成 预提交、提交、回滚的方法逻辑。因此,它是一个种偏 复杂、灵活、有侵入性 的分布式事务处理方案。 De…

目录

概述

使用

依赖与配置

代码


概述

   TCC 模式是一种侵入式的分布式事务解决方案,它不依赖于数据库的事务,而是要求开发者自定义完成 预提交、提交、回滚的方法逻辑。因此,它是一个种偏 复杂、灵活、有侵入性 的分布式事务处理方案。

 Demo

   这里附上seata的学习代码demo,开箱即用。包含AT/TCC/XA等模式的使用案例https://download.csdn.net/download/lmj3732018/88864802

使用

依赖与配置

    Seata的TCC模式依赖和配置与AT模式完全一致,只是TCC模式不需要定义 undo_log 数据库表,这里不再赘述。

代码

    1. 在使用时,我们需要在多个本地事务分支的外层使用 @GlobalTransactional 开启全局事务

@Override
@GlobalTransactional(name="createOrder",rollbackFor=Exception.class)
public Order saveOrder(OrderVo orderVo) {log.info("=============用户下单=================");log.info("当前 XID: {}", RootContext.getXID());//获取全局唯一订单号  测试使用Long orderId = UUIDGenerator.generateUUID();//阶段一: 创建订单Order order = orderService.prepareSaveOrder(orderVo,orderId);//扣减库存storageFeignService.deduct(orderVo.getCommodityCode(), orderVo.getCount());//扣减余额accountFeignService.debit(orderVo.getUserId(), orderVo.getMoney());return order;
}

2. 定义各个本地事务分支的预提交、提交、回滚方法

OrderService 接口

/**** 通过 @LocalTCC 这个注解,RM 初始化的时候会向 TC 注册一个分支事务。*/
@LocalTCC
public interface OrderService {/*** TCC的try方法:保存订单信息,状态为支付中** 定义两阶段提交,在try阶段通过@TwoPhaseBusinessAction注解定义了分支事务的 resourceId,commit和 cancel 方法*  name = 该tcc的bean名称,全局唯一*  commitMethod = commit 为二阶段确认方法*  rollbackMethod = rollback 为二阶段取消方法*  BusinessActionContextParameter注解 传递参数到二阶段中*  useTCCFence seata1.5.1的新特性,用于解决TCC幂等,悬挂,空回滚问题,需增加日志表tcc_fence_log*/@TwoPhaseBusinessAction(name = "prepareSaveOrder", commitMethod = "commit", rollbackMethod = "rollback", useTCCFence = true)Order prepareSaveOrder(OrderVo orderVo, @BusinessActionContextParameter(paramName = "orderId") Long orderId);/**** TCC的confirm方法:订单状态改为支付成功** 二阶段确认方法可以另命名,但要保证与commitMethod一致* context可以传递try方法的参数** @param actionContext* @return*/boolean commit(BusinessActionContext actionContext);/*** TCC的cancel方法:订单状态改为支付失败* 二阶段取消方法可以另命名,但要保证与rollbackMethod一致** @param actionContext* @return*/boolean rollback(BusinessActionContext actionContext);
}

OrderServiceImpl实现类

@Service
@Slf4j
public class OrderServiceImpl implements OrderService {@Autowiredprivate OrderMapper orderMapper;@Override@Transactional(rollbackFor = Exception.class)public Order prepareSaveOrder(OrderVo orderVo,@BusinessActionContextParameter(paramName = "orderId") Long orderId) {// 保存订单Order order = new Order();order.setId(orderId);order.setUserId(orderVo.getUserId());order.setCommodityCode(orderVo.getCommodityCode());order.setCount(orderVo.getCount());order.setMoney(orderVo.getMoney());order.setStatus(OrderStatus.INIT.getValue());Integer saveOrderRecord = orderMapper.insert(order);log.info("保存订单{}", saveOrderRecord > 0 ? "成功" : "失败");return order;}@Overridepublic boolean commit(BusinessActionContext actionContext) {// 获取订单idlong orderId = Long.parseLong(actionContext.getActionContext("orderId").toString());//更新订单状态为支付成功Integer updateOrderRecord = orderMapper.updateOrderStatus(orderId, OrderStatus.SUCCESS.getValue());log.info("更新订单id:{} {}", orderId, updateOrderRecord > 0 ? "成功" : "失败");return true;}@Overridepublic boolean rollback(BusinessActionContext actionContext) {//获取订单idlong orderId = Long.parseLong(actionContext.getActionContext("orderId").toString());//更新订单状态为支付失败Integer updateOrderRecord = orderMapper.updateOrderStatus(orderId, OrderStatus.FAIL.getValue());log.info("更新订单id:{} {}", orderId, updateOrderRecord > 0 ? "成功" : "失败");return true;}}

在 storageFeignService 及 accountFeignService的远程方法中也是以同样的方式定义上述三个方法。

http://www.tj-hxxt.cn/news/34194.html

相关文章:

  • 哈尔滨网站建设可信赖哈尔滨seo优化公司
  • 网站关键字多少合适西安网络推广
  • 魔客吧是什麼程序做的网站网站推广策划方案
  • 网站建设营销词百度百度一下你就知道
  • vue 做门户网站今日的重大新闻
  • 网站建设前规划青岛网络推广公司哪家好
  • devexpress做网站搜索引擎推广的常见形式有
  • 网站平台建设属于固定资产吗如何做地推推广技巧
  • wordpress修改网址广州seo怎么做
  • 做商城网站需要备案吗泰安优化关键词排名哪家合适
  • 做网站的域名怎样买如何快速推广网站
  • 上海网站seoseo积分系统
  • 万网如何做网站十大室内设计网站
  • 做企业评价的有哪些网站百度云网页版登录入口
  • 网站 网页数量网站推广网络营销
  • 网站建设速成适合交换友情链接的是
  • 网站免费的有没有网上有卖网站链接的吗
  • 即便你卖的是站长工具seo综合查询 分析
  • 一个软件开发需要什么技术合肥网站优化技术
  • 哪个网站可以预约做头发的长沙网站关键词排名公司
  • 公明做企业网站免费外网加速器
  • 昆明建设网站制作网站链接查询
  • 做网站协议书合肥网站维护公司
  • mysql数据库建设网站公司优化是什么意思?
  • 有没有个人做网站的atp最新排名
  • 政府部门网站建设内容西安网络推广优化培训
  • 吕梁网站制作吕梁安全四川网络推广推广机构
  • 网站建设自己怎么做中国十大seo
  • 给女友惊喜做网站企业信息查询
  • fusion app上海比较好的seo公司