首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

RocketMQ原理解析-Producer(2)

RocketMQ原理解析-Producer(2)

producer 3.如何发送顺序消息[url=][/url]
Rocketmq能够保证消息严格顺序,但是Rocketmq需要producer保证顺序消息按顺序发送到同一个queue中,比如购买流程(1)下单(2)支付(3)支付成功,
这三个消息需要根据特定规则将这个三个消息按顺序发送到一个queue如何实现把顺序消息发送到同一个queue:           一般消息是通过轮询所有队列发送的,顺序消息可以根据业务比如说订单号orderId相同的消息发送到同一个队列, 或者同一用户userId发送到同一队列等等messageQueueList [orderId%messageQueueList.size()]messageQueueList [userId%messageQueueList.size()]
[url=][/url]




producer 4.如何发布分布式事务消息先引入官方文档图:


分布式事物是基于二阶段提交的
[url=][/url]
1)      一阶段,向broker发送一条prepared的消息,返回消息的offset即消息地址commitLog中消息偏移量。Prepared状态消息不被消费发送消息ok,执行本地事物分支, 本地事物方法需要实现rocketmq的回调接口

2) LocalTransactionExecuter,
处理本地事物逻辑返回处理的事物状态LocalTransactionState3)  二阶段,处理完本地事物中业务得到事物状态, 根据offset查找到commitLog中的prepared消息,设置消息状态commitType或者rollbackType,
让后将信息添加到commitLog中, 其实二阶段生成了两条消息
[url=][/url]

事物消息发送
返回列表