-
Notifications
You must be signed in to change notification settings - Fork 2.8k
2 快速开始
changmingxie edited this page May 31, 2021
·
35 revisions
未完待续。。。
让我们从一个微服务示例开始。
用户购买商品的业务逻辑。整个业务逻辑由3个微服务提供支持:
支付服务:根据采购需求创建订单,发起支付。
资金服务:从用户资金帐户中扣除余额。
红包服务:从用户红包账户中扣除余额。
微服务部署架构图
红包服务:
public interface RedPacketTradeOrderService {
@Compensable
public String record(RedPacketTradeOrderDto tradeOrderDto);
}
资金服务:
public interface CapitalTradeOrderService {
@Compensable
public String record(CapitalTradeOrderDto tradeOrderDto);
}
支付服务:
@Compensable(confirmMethod = "confirmMakePayment", cancelMethod = "cancelMakePayment", asyncConfirm = false)
public void makePayment(@UniqueIdentity String orderNo) {
System.out.println("order try make payment called.time seq:" + DateFormatUtils.format(Calendar.getInstance(), "yyyy-MM-dd HH:mm:ss"));
Order order = orderRepository.findByMerchantOrderNo(orderNo);
String result = capitalTradeOrderService.record(buildCapitalTradeOrderDto(order));
String result2 = redPacketTradeOrderService.record(buildRedPacketTradeOrderDto(order));
}
示例包含tcc-transaction-dubbo-sample 和 tcc-transaction-http-sample 两个。这两个示例业务模型内容是一样的,区别在于rpc不一样,tcc-transaction-dubbo-sample 演示使用隐式传参的方式传输tcc-transaction在rpc调用过程中需要传输的参数TransactionContext,而tcc-transaction-http-sample演示使用显示传参(接口方法中定义TransactionContext参数)。
-
配置tcc-transaction-dubbo-capital 1.1 生效tcc-transaction
XML配置
<tcc:annotation-driven transaction-repository="transactionRepository"/>
注解配置 @EnableTccTransaction
1.2 配置transaction repository transaction repository用来保存事务日志,框架提供多种Transaction Repository:
文档将持续更新中。。。