分布式事务的两种常见实现方式:
2pc tcc
2pc两阶段提交 遵循XA协议 、其实可以理解为”预提交“
tcc三阶段提交 try confirm cancel
RocketMQ中采用2pc 两阶段提交
RocketMQ中事务消息流程图
源码:
private GetResult getHalfMsg(MessageQueue messageQueue, long offset) {
GetResult getResult = new GetResult();
PullResult result = pullHalfMsg(messageQueue, offset, PULL_MSG_RETRY_NUMBER);
getResult.setPullResult(result);
List messageExts = result.getMsgFoundList();
if (messageExts == null) {
return getResult;
}
getResult.setMsg(messageExts.get(0));
return getResult;
}



