消息类型-顺序消息|学习笔记

简介: 快速学习消息类型-顺序消息

开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第四阶段消息类型-顺序消息】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/686/detail/11910


消息类型-顺序消息


顺序消息

顺序消息是消息队列提供的一种严格按照顺序来发布和消费的消息类型。

image.png

RocketMQ 本身是一个先进先出的消息队列,本身已经保证消息的顺序性,单独的再搞一个顺序消息是因为前面普通消息没法保证消息的顺序发布和消费。跟 RocketMQ 本身的内部结构有关系。

这张图上左边部分是消息生产者,右边可以认为是 RocketMQ 里面的 Block,Block 里面是有多个 Message Quenue 存在。

接下来生产者开始往 Block 里面进行消息投递,在消息投递的时候默认是不能够保证消息会投递到哪一个 Message Quenue,比如消息生产者有三个消息1、2、3,这三个消息要求是有顺序性的,消息投递的时候可能第一个消息来到第一个 Block,第二个消息来到第二个关系。第三个消息可能到第三个上面,然后作为消费者看到的 Block 里面的 Message Quenue 是等价的,在消费的时候有可能先去消费第二个,再去消费第三个,再去消费第一个,不能够保证顺序消费的问题。

只需要保证把有顺序的消息投递到同一个 Message Quenue 上就可以了,比如三个消息,第一个投递过来是第一块的,第二个也要来到这块,第三个还要来到这,能够保证它都在同一个 Message Quenue 上,消费者在消费的时候对于同一个 message 上的数据,绝对是可以保证顺序消费的,解决了顺序发布消费的问题。

image.png

写代码之前首先来到控制页面,看一下 topic 主题,点击状态,可以看到当前主题下面的队列

image.png

默认有四个队列的,四个队列里面前三个已经有消息存在,有两个的,有一个的,接下来再来模拟发送几条普通消息,看是否会落在同一个 Message Quenue 上。

image.png

为了简单直接发送单向消息

//单向消息

@Test

public void testoneWay() {

for (int i = o; i < 10; i++) {

rocketMoTemplate.sendOneWay(destination:"test-topic-1", payload:"这是一条单向消息")

}

}

}

运行一下,已经跑完

点击状态,发现落在每一个上面,第一个多三个,第二个多三个,第三个多两个,第四个多两个,一共是有十个消息分布在四个队列上去,保证不了消费的可引性。

image.png

发送顺序消息:

//参数随便写,保证不重复

//单向顺序消息

@Test

publia void testoneWayOrderly() {

for (inti=o;i<10;i++){

//第三个参数的作用是用来决定这些消息发送到哪个队列的上的

rocketMQTemplate.sendOneWayorderly( destination:

"test-to pic-1",payload:"这是一条单向消息",

hashKey:"xx");

}

}

}

发送消息看结果:

image.png

都落在第一个队列上,保证了发送时候都在同一个队列上,也保证了发送时的顺应性,这是单向消息的顺序。

对于其他的比如说同步和异步消息都提供了相同的 Orderly 上,用法和单向消息是完全一致的。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3月前
|
消息中间件 存储 负载均衡
RocketMQ 消息的顺序和重复
这篇文章探讨了RocketMQ中消息顺序和重复的问题,解释了为什么RocketMQ不保证消息顺序和不重复,并提供了解决这些问题的策略,包括消费端幂等性处理和使用日志表记录已处理消息ID,同时介绍了RocketMQ的事务消息、Producer和Consumer的最佳实践,以及其他配置和RocketMQ的基本概念。
44 0
RocketMQ 消息的顺序和重复
|
4月前
|
消息中间件 SQL RocketMQ
【RocketMQ系列五】消息示例-顺序消息&延迟消息&广播消息的实现
【RocketMQ系列五】消息示例-顺序消息&延迟消息&广播消息的实现
74 1
|
6月前
|
消息中间件 存储 Kafka
几种 MQ 顺序消息的实现方式
几种 MQ 顺序消息的实现方式
|
消息中间件 存储 网络协议
大厂都是如何处理重复消息的?
消息消费失败,很多框架会自动执行重试,而重试就产生了重复消息。 MQTT协议给出三种传递消息时能够提供的
277 0
|
消息中间件 存储 RocketMQ
【视频】顺序消息| 学习笔记
快速学习【视频】顺序消息
【视频】顺序消息| 学习笔记
|
存储 消息中间件 Linux
多类型业务消息专题-顺序消息 | 学习笔记
快速学习多类型业务消息专题-顺序消息
多类型业务消息专题-顺序消息 | 学习笔记
|
编解码 Java 测试技术
消息类型-普通消息|学习笔记
快速学习消息类型-普通消息
168 0
消息类型-普通消息|学习笔记
|
存储 Java 数据库
消息类型-事务消息|学习笔记
快速学习消息类型-事务消息
158 0
消息类型-事务消息|学习笔记
|
消息中间件 Java
浅析什么是顺序消息?
在日常开发中,或多或少的都遇到过顺序消息的使用场景,那么为什么要使用顺序消息呢?如果不使用顺序消息会有什么问题吗?市面上的消息中间件又是如何实现的呢?
215 0
浅析什么是顺序消息?
|
消息中间件 运维 监控
多类型业务消息专题-普通消息 | 学习笔记(一)
快速学习多类型业务消息专题-普通消息
164 0
 多类型业务消息专题-普通消息 | 学习笔记(一)