rocketmq事物消息
2022-05-24 15:27:53 0 举报
rocketmq事物消息
作者其他创作
大纲/内容
UNKNOWN
broker服务器
根据真实的TOPIC和QUEUEID保存消息
是否事物消息
获取所有半消息MessageQueue
CHECK流程一: broker服务器 主动发起check
设置msgHeader事物标记`TRAN_MSG`MessageConst.PROPERTY_TRANSACTION_PREPARED
将半消息存储成为最终的消息
MQClient
发送endTransaction消息
choose one
在讨论事物消息的check流程前需要知晓几个常量①transactionTimeOut 事物超时 默认 6s②transactionCheckMax 事物重试次数 默认 15lspan style=\"font-size: inherit;\
是否check消息
生产者
messageQueue_3
发送endTransaction消息, 执行方式回到第二阶段.
插入
一系列判断是否需要check
SUCCESS
替换的half半消息的TOPIC和queueId为固定的`RMQ_SYS_TRANS_HALF_TOPIC` 和 queue_0
ROLLBACK
messageQueue_1
第二阶段
循环针对messageQueue进行check
删除半消息
发送事物消息
messageQueue_0
第一阶段
将真实事物消息转成half半消息
发送消息(普通消息处理)
当前遍历的messageQueue是否全部执行完成了或者是全都删除了
输出日志
T
从producer的hashmap中获取对应的处理实例
本地事物是否执行成功
获取近32条op消息.
保存消息
将half半消息topic和queueId替换原始的topic和queueId
执行本地事物
消息
从返回消息中获取transactionId
本地事物check
从半消息TOPIC中获取一个消息,从最新的开始
将真实topic和queueId保存到msgHeader中将真实topic保存在 `REAL_TOPIC`属性中将真实queueId保存在 `REAL_QID`属性中
messageQueue_2
删除该半消息
AbstractTransactionalMessageCheckListener 处理check消息
收藏
收藏
0 条评论
下一页