信息

<<返回上一页

RocketMQ事务信息解析!

发布时间:2024-11-15 04:37:27点击:

单体架构下的事务

在单体系统的开发环节中,假设某个场景下须要对数据库的多张表启动操作,为了保证数据的分歧性,普通会经常使用事务,将一切的操作所有提交或许在出错的时刻所有回滚。

以创立订单为例,假定下单后须要做两个操作:

在单体架构下只要经常使用@Transactional开启事务,就可以保证数据的分歧性。

@Transactionalpublic void order() {String orderId = UUID.randomUUID().toString();// 生成订单orderService.createOrder(orderId);// 参与积分creditService.addCredits(orderId);}

散布式架构下的事务

以下单流程为例,在散布式架构下的处置流程如下:

普通MQ信息存在的疑问

@Transactionalpublic void order() {String orderId = UUID.randomUUID().toString();// 创立订单Order order = orderService.createOrder(orderDTO.getOrderId());// 发送订单创立的MQ信息sendOrderMessge(order);return;}

可以经常使用RocketMQ事务信息处置上述疑问。

RocketMQ事务信息基础流程

基本流程

值得留意的是:

RocketMQ事务信息经常使用限度

RocketMQ事务信息基本原理

驳回2PC两阶段设计。

源码解读

发送事务信息调用的是TransactionMQProducer的sendMessageInTransaction方法:

重要有以下几个步骤:

参考

《RocketMQ技术内情》