rocketMq 顺序消费

10 篇文章 515 订阅 ¥9.90 ¥99.00
40 篇文章 10 订阅
本文介绍了RocketMQ如何实现顺序消费,强调了同一订单消息必须发送到同一队列且该队列仅有一个消费者,同时解释了如何通过MessageQueueSelector指定队列以保证顺序,并通过代码示例展示了发送和消费顺序消息的过程。
摘要由CSDN通过智能技术生成

什么是顺序消费?

消息有序指的是一类消息消费时,能按照发送的顺序来消费。例如:一个订单产生了 3 条消息,分别是订单创建、订单付款、订单完成。消费时,要按照这个顺序消费才有意义。与此同时多笔订单之间又是可以并行消费的。

rocketmq是怎么实现顺序消费的呢?

①rocketmq保证同一个订单的消息,一定要发送到同一个队列
②并且该队列只有一个消费者,也就是说 同一个队列,不能出现多个消费者并行消费的情况
到这里可能有的人会问,一个队列只有一个消费者,那性能岂不是很低?关于这个情况,rocketmq的解决方法是,虽然同一个队列不能并行消费,但是可以并行消费不同的队列。就是上面说的同时多笔订单之间又是可以并行消费。

我们通过这张简图可以大致理解顺序消费的原理;
在这里插入图片描述
在上一篇的中我们提到了一个叫做 MessageQueueSelector 的组件,就是producer在发送消息的时候,如果不指定队列就会默认发送到topic下面的4个队列中的任意一个,如果使用MessageQueueSelector 就可以在发送消息的时候指定队列,依照这样的思路,我们来整理一下实现的思路;

1. 发送一组顺序订单消息,创建订单,订单支付,完成订单,但是他们拥有相同的订单号;
2. 根据订单号通过取模算法将相同的订单号的消息发送到指定的队列;
3. 消费端顺序获取订单的各个流程信息;

下面我们使用代码来实现一下

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小码农叔叔

谢谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值