RabbitMQ vs MQTT:深入比较与最新发展

article/2025/7/18 6:41:36

RabbitMQ vs MQTT:深入比较与最新发展

引言

在消息队列和物联网(IoT)通信领域,RabbitMQ 和 MQTT 是两种备受瞩目的技术,各自针对不同的需求和场景提供了强大的解决方案。随着 2025 年的到来,这两项技术都经历了显著的进步,尤其是 RabbitMQ 在 3.12 版本中引入了原生 MQTT 支持,并在 4.1.0 版本中进一步优化。本文将深入探讨 RabbitMQ 和 MQTT 的定义、区别、相似点以及应用场景,同时结合最新发展,提供一个全面且最新的技术分析。
在这里插入图片描述

RabbitMQ 详解

RabbitMQ 是一个开源消息代理软件,最初实现了高级消息队列协议(AMQP),并通过插件支持其他协议,如 MQTT 和 STOMP。它基于 Erlang 语言开发,利用 Open Telecom Platform 框架实现集群和故障转移功能。RabbitMQ 支持多种消息传递模式,包括:

  • 发布/订阅(pub/sub):消息广播给多个订阅者。
  • 请求/响应(request/reply):客户端与服务器之间的同步通信。
  • 点对点(point-to-point):消息直接发送到特定接收者。

RabbitMQ 的设计使其在企业级应用中表现出色,适合需要高可靠性和复杂消息路由的场景。它支持多种编程语言的客户端库,可在云端、本地或混合环境中轻松部署。

最新发展

  • RabbitMQ 3.12:引入了原生 MQTT 支持,显著提升了其在 IoT 场景中的性能。主要改进包括:

    • 内存使用:在处理百万级 MQTT 连接时,内存使用量减少高达 95%。例如,100 万个 MQTT 连接的内存使用从 3.11 版本的 301.1 GiB 降至 3.12 版本的 18.7 GiB。
    • 连接容量:支持数百万个连接,远超之前版本的能力。
    • 端到端延迟:QoS 1 和 QoS 0 消息的延迟降低 50% - 70%。
    • 吞吐量:QoS 1 消息的吞吐量提高 30% - 40%。
    • Erlang 进程:每个 MQTT 连接的 Erlang 进程从 22 个减少到 1 个。
    • 新队列类型:引入 rabbit_mqtt_qos0_queue,专为 QoS 0 设计,支持高达 300 万设备的大规模扇出,无需维护状态。
  • RabbitMQ 4.1.0:2025 年 4 月发布,带来性能改进和新的 Kubernetes 集群发现机制。MQTT 相关变化包括默认最大包大小从 256 MiB 调整为 16 MiB,可通过配置 mqtt.max_packet_size_authenticated 覆盖,且不得超过 max_message_size(默认 16 MiB)。

MQTT 详解

MQTT(MQ Telemetry Transport)是一个轻量级消息协议,专为物联网设计,优化了低带宽、高延迟网络的通信。它是 OASIS 标准,广泛应用于资源受限设备,如传感器、执行器和智能家居设备。MQTT 采用发布/订阅模式,设备向主题发布消息,其他设备订阅主题以接收消息。

MQTT 提供三种服务质量(QoS)级别:

  • QoS 0:最多一次交付,适合对可靠性要求不高的场景。
  • QoS 1:至少一次交付,确保消息到达但可能重复。
  • QoS 2:恰好一次交付,保证消息无重复且可靠送达。

MQTT 的设计目标是带宽效率高、功耗低,适合不可靠网络环境,如卫星通信或蜂窝网络。

RabbitMQ 与 MQTT 的比较

尽管 RabbitMQ 和 MQTT 都用于消息传递,但它们在设计目标和功能上有显著差异。以下是详细对比:

方面RabbitMQMQTT
性质消息代理,支持多种协议轻量级消息协议
设计目标企业级复杂消息场景IoT 和低带宽、高延迟应用
消息路由支持复杂路由和多种模式仅支持简单发布/订阅模式
适用设备高性能设备低功耗、资源受限设备
效率带宽效率较低,需要更多步骤发送消息带宽效率高,发送消息步骤更简单
实现难度客户端实现更复杂客户端实现更简单
安全性支持高级 SASL 机制,安全性较高本身不安全,需要额外安全措施(如 TLS/SSL)
消息生命周期适合长期消息适合短期消息
多消息命名空间支持多个消息命名空间不支持多个消息命名空间
Last Value Queues不支持支持

最新进展的影响

RabbitMQ 3.12 的原生 MQTT 支持显著提升了其在 IoT 场景中的竞争力。例如,内存使用量的大幅减少和连接容量的提升使其能够处理大规模 IoT 设备通信。然而,MQTT 由于其轻量级设计,仍是低带宽、资源受限场景的首选。

相似之处

尽管存在显著差异,RabbitMQ 和 MQTT 也有一些共同点:

  • 消息模式:两者都支持发布/订阅模式,适用于 IoT 场景。
  • IoT 应用:RabbitMQ 通过插件或原生支持 MQTT,可用于 IoT;MQTT 专为 IoT 设计。
  • 可扩展性:RabbitMQ 通过集群和联邦实现扩展,MQTT 通过轻量级设计支持数百万设备连接。

应用场景

RabbitMQ

  • 企业级应用:如金融交易系统、物流管理,需要复杂消息路由和高可靠性。
  • 高吞吐量环境:适合处理大量消息的实时数据处理系统。
  • 多协议支持:在需要整合 AMQP、MQTT 等协议的混合环境中表现出色。
  • IoT 增强场景:通过原生 MQTT 支持,适用于需要复杂功能(如路由或系统集成)的 IoT 应用。

MQTT

  • 物联网设备:如智能家居设备、工业传感器,适合资源受限环境。
  • 低带宽网络:如卫星通信、蜂窝网络,适合高延迟场景。
  • 简单消息传递:适用于仅需发布/订阅功能的应用。
  • 大规模部署:支持数百万设备的连接,适用于智能城市等项目。

选择建议

选择 RabbitMQ 还是 MQTT 取决于项目需求:

  • 复杂消息场景:选择 RabbitMQ,适合企业级系统或需要多协议支持的环境。
  • 轻量级 IoT 应用:选择 MQTT,适合低功耗设备和低带宽网络。
  • 混合场景:可结合使用,RabbitMQ 作为主消息代理,MQTT 用于边缘设备通信。

安全性与未来趋势

RabbitMQ 通过 SASL 机制提供较高安全性,而 MQTT 本身不安全,需额外配置 TLS/SSL。RabbitMQ 的多协议支持和原生 MQTT 改进使其在企业环境中更受欢迎,而 MQTT 的标准化趋势(如 OASIS 和 ISO 认证)使其在 IoT 领域前景广阔。

结论

RabbitMQ 和 MQTT 各有优势,RabbitMQ 适合复杂高性能场景,MQTT 专为 IoT 优化。理解两者的差异和联系有助于根据项目需求选择合适的技术。无论是构建企业级系统还是部署 IoT 设备网络,这两者都提供了强大的解决方案。

关键引用

  • RabbitMQ 官方网站
  • MQTT 官方网站
  • RabbitMQ 4.1.0 发布说明
  • RabbitMQ 3.12 原生 MQTT 支持
  • RabbitMQ vs MQTT 区别
  • CloudAMQP:RabbitMQ 3.12 的 MQTT 改进
  • RabbitMQ MQTT 插件文档
  • EMQX 文档:将 MQTT 数据集成到 RabbitMQ
  • ScaleGrid:RabbitMQ 关键特性
  • RabbitMQ Summit 2024 视频存档

http://www.hkcw.cn/article/AMJvhyudkU.shtml

相关文章

【Dify学习笔记】:Dify离线安装插件教程

Dify离线安装插件教程 1.本地下载插件 插件点击详情页面,安装右边的下载按钮,下载到本地 2.dify插件打包工具 dify-plugin-repackaging 下载后,进入到工具所在目录dify-plugin-repackaging/ git clone https://github.com/junjiem/dif…

2025年全国青少年信息素养大赛 scratch图形化编程挑战赛 小高组初赛 内部模拟试卷解析

2025年信息素养大赛初赛scratch模拟题 博主推荐 所有考级比赛学习相关资料合集【推荐收藏】 scratch资料 Scratch3.0系列视频课程资料零基础学习scratch3.0【入门教学 免费】零基础学习scratch3.0【视频教程 114节 免费】 历届蓝桥杯scratch国赛真题解析历届蓝桥杯scratch…

eBest智能价格引擎系统 助力屈臣氏饮料落地「价格大脑」+「智慧通路」数字基建​

从价格策略到终端执行,数字化正在重构饮料行业竞争壁垒! 近日,eBest为屈臣氏饮料提供的智能价格引擎系统已正式上线并投入运营。同时,基于eBest SFA方案且与屈臣氏饮料业务场景深度耦合的Smart Field Operation智慧通路项目正式启…

开发效率提升小技巧:快速提取图标资源的解决方案

在日常使用电脑的过程中,我们经常会遇到想要提取某个软件图标的情况,比如用于美化桌面、制作快捷方式,或者个人收藏等。这一款高效又实用的图标提取工具,帮助你轻松获取软件中的图标资源! ResHacker 是一个绿色免安装…

keepalived定制日志bug

keepalived定制日志bug 源码安装apt安装endl 源码安装 在/etc/rsyslog.d/目录下创建 keepalived的日志配置文件keepalived.conf [rootubuntu24-13:~]# vim /etc/rsyslog.d/keepalived.conf [rootubuntu24-13:~]# cat /etc/rsyslog.d/keepalived.conf local6.* /var/log/keepa…

SpringCloud——Docker

1.命令解读 docker run -d 解释:创建并运行一个容器,-d则是让容器以后台进程运行 --name mysql 解释: 给容器起个名字叫mysql -p 3306:3306 解释:-p 宿主机端口:容器内端口,设置端口映射 注意: 1、…

2.测试项目启动和研读需求文档

软件质量需求 定义: 用于确定测试目标,反映用户对软件的要求分类依据: 分为功能和非功能两大类,其中非功能包含性能、界面等8个子类 软件质量需求的分类 功能需求: 软件能做什么的核心能力非功能需求: 性能:运行效率和资源占用界面&#xf…

在 Android 上备份短信:保护您的对话

尽管我们的Android手机有足够的存储空间来存储无数的短信,但由于设备故障、意外删除或其他意外原因,您可能会丢失重要的对话。幸运的是,我们找到了 5 种有效的 Android SMS 备份解决方案,确保您的数字聊天和信息保持安全且可访问。…

02业务流程的定义

1.要想用好业务流程,首先必须得了解流程与认识流程,什么是业务流程。在认识流程之前,首先要理清两个基本概念,业务和流程。 业务指的是:个人的或者摸个机构的专业工作。流程,原本指的是水的路程&#xff0…

PHP7+MySQL5.6 查立得源码授权系统DNS验证版

# PHP7MySQL5.6 查立得源码授权系统DNS验证版 ## 一、系统概述 本系统是一个基于PHP7和MySQL5.6的源码授权系统,使用DNS TXT记录验证域名所有权,实现对软件源码的授权保护。 系统支持多版本管理,可以灵活配置不同版本的价格和下载路径&#…

vue+threeJs 绘制3D圆形

嗨,我是小路。今天主要和大家分享的主题是“vuethreeJs 绘制圆形”。 今天找到一个用three.js绘制图形的项目,主要是用来绘制各种形状。 项目案例示意图 1.THREE.ShapeGeometry 定义:是 Three.js 中用于从 2D 路径形状&#xff08…

vue+threeJs 生成一个圆柱体

嗨,我是小路。今天主要和大家分享的主题是“vuethreeJs 生成一个圆柱体”。 案例示例图 1.CylinderGeometry 定义:创造一个圆柱体。 属性列表列表说明 radiusTop 顶部半径 radiusBottom 底部半径 height 高 radialSegments 横向分段&#xff…

VUE中created() 和 mounted()俩种生命周期钩子函数的区别

在 Vue.js 中,created() 和 mounted() 是两个关键的生命周期钩子函数,它们的主要区别在于​​调用时机​​和​​可访问的实例属性​​: 调用时机 ​​created()​​ 在 Vue 实例创建完成后立即调用(​​数据初始化完成&#xff…

ASP.NET MVC添加模型示例

ASP.NET MVC高效构建Web应用ASP.NET MVC 我们总在谈“模型”,那到底什么是模型?简单说来,模型就是当我们使用软件去解决真实世界中各种实际问题的时候,对那些我们关心的实际事物的抽象和简化。比如,我们在软件系统中设…

【免费赠书8本】《扣子开发AI Agent智能体应用》

【图书介绍】《扣子开发AI Agent智能体应用》-CSDN博客 博主免费赠书《扣子开发AI Agent智能体应用》8本。 想要赠书的朋友,请在本文后面加评论,要求赠书。 收到赠书后,受赠书的朋友,两周内在CSDN博客上发一遍博文,…

stm32无刷电机控制_滑膜观测器更改电机如何调整?

这个教程是针对KY_Motor的无刷电机开发板,滑膜观测器反正切的补充教程,大家比较关注现有的程序如何适配到自己的电机上,因此我们团队推出了如下教程,让大家在学习的过程中有迹可循。 开发板链接:开发板 1. 电机电气参…

Vad-R1:通过从感知到认知的思维链进行视频异常推理

文章目录 速览摘要1 引言2 相关工作视频异常检测与数据集视频多模态大语言模型具备推理能力的多模态大语言模型 3 方法:Vad-R13.1 从感知到认知的思维链(Perception-to-Cognition Chain-of-Thought)3.2 数据集:Vad-Reasoning3.3 A…

【Doris基础】Doris中的Tablet详解:核心存储单元的设计与实现

目录 1 Tablet基础概念 1.1 什么是Tablet 1.2 Tablet的核心特性 1.3 Tablet与相关概念的关系 2 Tablet的架构设计 2.1 Tablet的整体架构 2.2 Tablet的存储结构 3 Tablet的生命周期管理 3.1 Tablet的创建流程 3.2 Tablet的数据写入流程 3.3 Tablet的压缩与合并 4 Ta…

因泰立科技:镭眸T51激光雷达,打造智能门控新生态

在高端门控行业,安全与效率是永恒的追求。如今,随着科技的飞速发展,激光雷达与TOF相机技术的融合,为门控系统带来了前所未有的智能感知能力,开启了精准守护的新时代。因泰立科技的镭眸T51激光雷达,作为这一…

Delphi读写Mifare Desfire Ev1 Ev2 EV3卡修改AES密钥源码

本示例使用的发卡器:https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1b3bN1Vu&ftt&id917152255720 unit Unit2;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls,declaredl…