关于 RocketMQ 顺序消息的疑问

45 天前
 falsemask

https://rocketmq.apache.org/zh/docs/featureBehavior/03fifomessage/ 这里的单一生产者指的是单个线程吗?生产都是多实例部署的,如果用户先发起一个下单请求,再发起支付请求,这两个请求都需要发送 MQ 消息。这两个请求被不同的机器处理,用户肯定是先下单再支付的,但是如何保证这两条 MQ 消息也是有序的?

634 次点击
所在节点    问与答
1 条回复
NizumaEiji
45 天前
看 rocketmq 的代码。
发送者的有序是发送者实现的,具体就是根据你的提供的一个分区 key 进行 hash ,然后和具体的逻辑队列数取余,来保证相同分区 key 都发送到一个逻辑队列上。
所以我理解这种顺序是完全取决于你的消息发送的频率,还有一对顺序消息的严格程度的。你的消息发送频率不高,对于顺序消息的严格程度要求也不高,那多个 jvm 实例并行发送也没啥问题。如果你对顺序严格程度要求高,发送消息的频率要大,那甚至需要你的 mq 发送者单例并且加锁来保证。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1027552

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX