目录
https://blog.csdn.net/leeasony/article/details/104857576
https://blog.csdn.net/daijiguo/article/details/89059963
一. RocketMQ如何保证分布式事务最终一致性?
1.1 rocketmq事务消息执行过程
我们需要先了解一下事务的执行流程
- producer 会向broker 发送一个prepare消息,此消息不可以被counsumer看到,然后执行本地事务并提交。
- 执行本地事务的回调函数
executeLocalTransaction()
有三种返回值:
- LocalTransactionState.COMMIT_MESSAGE; //执行成功可以提交
- LocalTransactionState.ROLLBACK_MESSAGE;//遇到异常回滚
- LocalTransactionState.UNKNOW//未知错误:宕机、停电
将本地事务执行结果返回给broker
- 如果是
COMMIT_MESSAGE
那么把刚才的prepare
消息设置为可以被consumer消费 - 如果是
ROLLBACK_MESSAGE
那么broker
把这个