RocketMQ事务
分布式事务的两种常见实现方式:
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<MessageExt> messageExts = result.getMsgFoundList();
if (messageExts == null) {
return getResult;
}
getResult.setMsg(messageExts.get(0));
return getResult;
}