参考答案
大厂面试题:
RocketMQ 的一大特点是对分布式事务的支持,说说它在分布式事务支持这块机制的底层原理吧?
参考答案:
分布式系统中的事务可以使用 TCC(Try、Confirm、Cancel)、2pc ,来解决分布式系统中的消息原子性。
RocketMQ 4.3+ 提供分布事务功能,通过 RocketMQ 事务消息能达到分布式事务的最终一致。
RocketMQ 的实现方式:
- Half Message:预处理消息,当broker收到此类消息后,会存储了 RMQ_SYS_TRANS_HALF_TOPIC 的消息消费队列中。
- 检查事务状态:Broker会开启一个定时任务,消费RMQ_SYS_TRANS_HALF_TOPIC队列中的消息,每次执行任务会向消息发送者确认事务执行状态(提交、回滚、未知),如果是未知,Broker会定时去回调在重新检查。
- 超时:如果超过回查次数,默认回滚消息。
即:它并没有真正进入 Topic 的 queue ,而是用了临时 queue ,来放所谓的 half message ,等提交事务后,才会真正的将 half message 转移到 topic 下的 queue 。
以上,是消息队列 RocketMQ 面试题【RocketMQ 在分布式事务支持这块机制的底层原理?】的参考答案。
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—