RocketMQ事务消息
2023-04-21 11:50:59 13 举报
RocketMQ事务消息
作者其他创作
大纲/内容
清除延时属性
处理发送结果
回查本地事务状态
回滚
跟提交的区别就是没有中间这两步
根据requestHeader中的物理偏移量从commitLog中取出prepare状态的消息
消息存储
删除PrepareMessage,其实是将原预处理消息存入一个新的主题RMQ_SYS_TRANS_OP_HALF_TOPIC,代表该消息已被处理
处理事务消息
判断是否允许发送事务消息
应用程序(生产者)
Broker(SendMessageProcessor)
TransactionalMessageBridge
将消息投递到原主题队列中
结束事务,根据本地事务决定消息事务是提交还是回滚,单向请求
成功
判断提交或回滚
提交或回滚
提交
根据PrepareMessage复制一份消息,topic为原主题
本地事务状态=回滚(不会执行本地事务)
事务回查定时器60s
调用发送事务消息接口
Broker(EndTransactionProcessor)
获取要发送到的queueId和topic配置
失败
转换事务消息,将原topic和queueId放到属性中,替换为topic为RMQ_SYS_TRANS_HALF_TOPIC,queueId为0
事务消息属性设为true
本地事务状态=执行本地事务(使用事务监听器执行)
同步发送prepare消息
拉取待处理的消息
构建消息类
0 条评论
下一页