RockeyMQ顺序发送

Posted huangxinglei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RockeyMQ顺序发送相关的知识,希望对你有一定的参考价值。

 

什么是顺序发送:
  消息生产和消息消费都严格按照先进先出的原则 

 顺序消息分为两种:
  全局顺序: top下所有的queue都要进行FIFO 生产和消费,这种比较少用,会造成消息的堵塞,吞吐量不高,

  局部顺序消息

    确保top下面的一组队列 queque 顺序保存一直就行了,先发送的消息一定先被消费,比如我们订单系统,按 创建订单,支付订单,完成订单 三个步骤,必须按顺序进行处理

 

顺序消息只能是同步的,异步的不能确保哪个消息先到,广播模式也不支持,不能确保哪台服务的速度比较快

 

 

product实体类,模拟数据

技术图片

 

 

生产者案例:

根据 MessageQueueSelector 策列,把订单号进行取已操作,每个订单号都是唯一的,确保能放进一个队列里面

 

技术图片

 

 

 

消费者案例

使用 MessageListenerOrderly,单线程,分配到的queque是固定的,在集群的情况下,或先获取queue 锁,然后锁定该队列,其他消费端就不能获取到里面的消息了,确保数据的一致性

技术图片

 

 技术图片

 

 

代码测试

发送到相同的队列

技术图片

 

 

消费端  先发的消息先被消费

技术图片

 

 

集群模式测试

启动多个Consumer                    -Dserver.port=8772

技术图片

 

 

 

集群查看:
技术图片

 

 

技术图片

 

 

技术图片

 

以上是关于RockeyMQ顺序发送的主要内容,如果未能解决你的问题,请参考以下文章

发送多个 mpi 非阻塞发送 - 它会保留发送的顺序吗

RocketMQ(04)——发送顺序消息

RocketMQ(04)——发送顺序消息

发送数组以按顺序排列

Discord.js 按顺序发送消息

RocketMQ学习笔记:消息发送模式