在单体系统的开发环节中,假设某个场景下须要对数据库的多张表启动操作,为了保证数据的分歧性,普通会经常使用事务,将一切的操作所有提交或许在出错的时刻所有回滚。
以创立订单为例,假定下单后须要做两个操作:
在单体架构下只要经常使用@Transactional开启事务,就可以保证数据的分歧性。
@Transactionalpublic void order() {String orderId = UUID.randomUUID().toString();// 生成订单orderService.createOrder(orderId);// 参与积分creditService.addCredits(orderId);}
以下单流程为例,在散布式架构下的处置流程如下:
@Transactionalpublic void order() {String orderId = UUID.randomUUID().toString();// 创立订单Order order = orderService.createOrder(orderDTO.getOrderId());// 发送订单创立的MQ信息sendOrderMessge(order);return;}
可以经常使用RocketMQ事务信息处置上述疑问。
值得留意的是:
RocketMQ事务信息经常使用限度
驳回2PC两阶段设计。
发送事务信息调用的是TransactionMQProducer的sendMessageInTransaction方法:
重要有以下几个步骤:
《RocketMQ技术内情》
本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/6415.html