开发者学堂课程【RocketMQ知识精讲与项目实战(第一阶段):顺序消息分析】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/702/detail/12381
顺序消息分析
内容介绍
一、含义
二、Broker
三、发送者
四、消费者
五、总结
一、含义
顺序消息,是消费者消费消息的顺序要与生产者发送顺序是一致的,当前 MQ 是一
个消息队列,本身数据结构是先进先出。
二、Broker
消息发送方会依次进入对列,消息队列会保证先进先出。
将信息发送 Broker。Broker 内部有四个队列。
三、发送者
左边是消息的发送者,右边是消息的消费者发送的消息是与订单有关的消息。假设
与张三有创建、付款、推送、完成四个方面有关系,必须按着顺序发送。
Broker 中有多个队列是为了提高消息发送与消息消费的顺序。由于有多个队列,那么这几个消息会被放到多个队列,发送到 Broker 中,会采取轮循的方式,将消息一次放到多个队列中。
四、消费者
消费者采用多线程方式去同时消费多个消息。但是采用多线程方式去同时消费多个
消息很难保证发送的顺序,这时要保证消息顺序,会分成两个方面。
(1)全局消息顺序:当前发送给 Broker 所有队列的消息,要保证所有 Broker 中的所有队列的消息的消费,要遵循发送顺序.全局是没有必要的
(2)局部消息顺序:只保证张三消息发送的顺序就行,如果有李四的消息,只需保证每个人发送的顺序就可以了。保证局部消息顺序,其实可以把张三的消息放到一个队列里,李四放到队列里。对于一个单位的消费采用单线程,对于多个单位可
以采用多线程。
五、总结
对于消息顺序来说,只要保证 Broker 某一队列的顺序即可。局部消息的顺序一般来讲可以在发送消息时通过订单的业务标识,比如订单 id 去选择当前的某一队列,只要是这个订单后续消息,都给一个队列中去,就通过订单 id 去选择当前的队列。保证发送者和消费者的顺序。