RabbitMQ消息中间件学习2:消息队列协议、持久化、分发策略等

本文涉及的产品
性能测试 PTS,5000VUM额度
注册配置 MSE Nacos/ZooKeeper,118元/月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 消息队列协议、持久化、分发策略等

消息中间件的应用场景


1、跨系统数据传递

2、高并发的流量削峰

3、数据的分发与异步处理

4、大数据分析与处理

5、分布式事务


协议


只有把协议定好了才能进行工作。


网络协议的三个要素


1、语法。

2、语义。

3、时序。


为什么消息队列不使用HTTP协议呢?

1、因为MQ是追求极致的体验,但是HTTP是没办法完成的,是比较复杂的,HTTP包含了请求报文等cookie、状态码、响应码什么的,所以为了追求性能,只需要接收消息即可。

2、大部分HTTP的请求都是短连接,实际交互过程中,一个请求到相应很有可能会中断,中断以后就不会进行持久化,就会造成请求的丢失。这样不利于消息中间件的业务场景,因为消息中间件可能是一个长期的获取消息的过程。


AMQP协议


特性:

1、分布式事务支持。

2、消息的持久化支持。。

3、高性能和高可靠的消息处理优势。


持久化


简单来说就是存入磁盘,而不是在内存中随服务器重启断开而消失 ,使数据能够永久保存。


常见的持久化方式:

ActiveMQ 支持文件存储和数据库存储。

RabbitMQ支持文件存储。不支持数据库存储


消息的分发策略


MQ有几个角色:

1、生产者。

2、存储消息。

3、消费者。

bfccf03324ef40cb6c28bec04da3b00a_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_11,color_FFFFFF,t_70,g_se,x_16.png

消息分发策略机制和对比


b0334d9f28059918e5cf724735d472c3_555a342211494b0e9ea6181b92c4b0e0.png

发布订阅:就是只要订阅了,有消息了就能收到信息。

轮询分发:当消息到消息队列了,讲究的是一个公平的机制(理解成平等最好)。无论你的服务器性能怎么样都会是公平的。(后面会有一个指标QS)但是是没有顺序的,

038fd650c762864ca65534b99a872adf_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_12,color_FFFFFF,t_70,g_se,x_16.png

公平分发是能者多劳的,多劳多得。


重发:

208ec5123d310499769192cda355dcdc_2f1db667e2e74bd2b60e38573a8d72f6.png

当订单系统没有反馈,即中间件没有收到订单系统的反馈,那么就会重发消息,保证消息的可靠性期。


相关实践学习
消息队列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
相关文章
|
5月前
|
消息中间件 存储 Java
RocketMQ(一):消息中间件缘起,一览整体架构及核心组件
【10月更文挑战第15天】本文介绍了消息中间件的基本概念和特点,重点解析了RocketMQ的整体架构和核心组件。消息中间件如RocketMQ、RabbitMQ、Kafka等,具备异步通信、持久化、削峰填谷、系统解耦等特点,适用于分布式系统。RocketMQ的架构包括NameServer、Broker、Producer、Consumer等组件,通过这些组件实现消息的生产、存储和消费。文章还提供了Spring Boot快速上手RocketMQ的示例代码,帮助读者快速入门。
|
6月前
|
消息中间件 存储 RocketMQ
消息中间件-RocketMQ技术(二)
消息中间件-RocketMQ技术(二)
|
6月前
|
消息中间件 存储 中间件
消息中间件-RocketMQ技术(一)
消息中间件-RocketMQ技术(一)
|
4月前
|
消息中间件 存储 Apache
探索 RocketMQ:企业级消息中间件的选择与应用
RocketMQ 是一个高性能、高可靠、可扩展的分布式消息中间件,它是由阿里巴巴开发并贡献给 Apache 软件基金会的一个开源项目。RocketMQ 主要用于处理大规模、高吞吐量、低延迟的消息传递,它是一个轻量级的、功能强大的消息队列系统,广泛应用于金融、电商、日志系统、数据分析等领域。
258 0
探索 RocketMQ:企业级消息中间件的选择与应用
|
5月前
|
消息中间件 编解码 Docker
【Docker项目实战】Docker部署RabbitMQ消息中间件
【10月更文挑战第8天】Docker部署RabbitMQ消息中间件
186 1
【Docker项目实战】Docker部署RabbitMQ消息中间件
|
4月前
|
消息中间件 存储 Java
吃透 RocketMQ 消息中间件,看这篇就够了!
本文详细介绍 RocketMQ 的五大要点、核心特性及应用场景,涵盖高并发业务场景下的消息中间件关键知识点。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
吃透 RocketMQ 消息中间件,看这篇就够了!
|
6月前
|
中间件 API 开发者
深入理解Python Web框架:中间件的工作原理与应用策略
在Python Web开发中,中间件位于请求处理的关键位置,提供强大的扩展能力。本文通过问答形式,探讨中间件的工作原理、应用场景及实践策略,并以Flask和Django为例展示具体实现。中间件可以在请求到达视图前或响应返回后执行代码,实现日志记录、权限验证等功能。Flask通过装饰器模拟中间件行为,而Django则提供官方中间件系统,允许在不同阶段扩展功能。合理制定中间件策略能显著提升应用的灵活性和可扩展性。
106 4
|
7月前
|
消息中间件 Java 测试技术
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
这篇文章是关于如何在SpringBoot应用中整合RabbitMQ的消息中间件。内容包括了在SpringBoot项目中添加RabbitMQ的依赖、配置文件设置、启动类注解,以及如何通过单元测试来创建交换器、队列、绑定,并发送和接收消息。文章还介绍了如何配置消息转换器以支持对象的序列化和反序列化,以及如何使用注解`@RabbitListener`来接收消息。
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
|
7月前
|
消息中间件 Docker 容器
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
这篇文章提供了RabbitMQ的安装和基本使用教程,包括如何使用Docker拉取RabbitMQ镜像、创建容器、通过浏览器访问管理界面,以及如何创建交换机、队列、绑定和使用direct、fanout和topic三种类型的交换器进行消息发布和接收的测试。
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
|
7月前
|
消息中间件 存储 网络协议
消息中间件RabbitMQ---概述和概念 【一】
该文章提供了对消息中间件RabbitMQ的全面概述,包括其核心概念、工作原理以及与AMQP和JMS的关系。
消息中间件RabbitMQ---概述和概念 【一】

热门文章

最新文章

相关产品

  • 云消息队列 MQ