RocketMQ事务消息的实现基于两阶段提交协议。其具体实现步骤如下:
- 消息生产者发送带有“Half Message”的消息给消息代理服务器。
- 消息代理服务器接收到“Half Message”后,会暂存消息,并向消息生产者返回“Half Message”的确认消息。
- 消息生产者收到“Half Message”确认消息后,执行本地事务,并根据事务执行结果决定是向消息代理服务器发送“commit”消息还是“rollback”消息。
- 如果消息生产者向消息代理服务器发送的是“commit”消息,则消息代理服务器会将暂存的“Half Message”转化为正式消息,向订阅者发送