RabbitMQ vs MQTT:深入比较与最新发展
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 都用于消息传递,但它们在设计目标和功能上有显著差异。以下是详细对比:
方面 | RabbitMQ | MQTT |
---|---|---|
性质 | 消息代理,支持多种协议 | 轻量级消息协议 |
设计目标 | 企业级复杂消息场景 | 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 视频存档
相关文章:

RabbitMQ vs MQTT:深入比较与最新发展
RabbitMQ vs MQTT:深入比较与最新发展 引言 在消息队列和物联网(IoT)通信领域,RabbitMQ 和 MQTT 是两种备受瞩目的技术,各自针对不同的需求和场景提供了强大的解决方案。随着 2025 年的到来,这两项技术都…...

金砖国家人工智能高级别论坛在巴西召开,华院计算应邀出席并发表主题演讲
当地时间5月20日,由中华人民共和国工业和信息化部,巴西发展、工业、贸易与服务部,巴西公共服务管理和创新部以及巴西科技创新部联合举办的金砖国家人工智能高级别论坛,在巴西首都巴西利亚举行。 中华人民共和国工业和信息化部副部…...

【KWDB 创作者计划】_再热垃圾发电汽轮机仿真与监控系统:KaiwuDB 批量插入10万条数据性能优化实践
再热垃圾发电汽轮机仿真与监控系统:KaiwuDB 批量插入10万条数据性能优化实践 我是一台N25-3.82/390型汽轮机,心脏在5500转/分的轰鸣中跳动。垃圾焚烧炉是我的胃,将人类遗弃的残渣转化为金色蒸汽,沿管道涌入我的胸腔。 清晨&#x…...
CentOS 7 安装docker缺少slirp4netnsy依赖解决方案
CentOS 7安装docker缺少slirp4netnsy依赖解决方案 Error: Package: docker-ce-rootless-extras-26.1.4-1.el7.x86_64 (docker-ce-stable) Requires: slirp4netns > 0.4 Error: Package: docker-ce-rootless-extras-26.1.4-1.el7.x86_64 (docker-ce-stable) 解决方案 若wge…...

Android第十一次面试多线程篇
面试官: “你在项目里用过Handler吗?能说说它是怎么工作的吗?” 候选人: “当然用过!比如之前做下载功能时,需要在后台线程下载文件,然后在主线程更新进度条。这时候就得用Handler来切…...

安全,稳定可靠的政企即时通讯数字化平台
在当今数字化时代,政企机构面临着复杂多变的业务需求和日益增长的沟通协作挑战。BeeWorks作为一款安全,稳定可靠的政企即时通讯数字化平台,凭借其安全可靠、功能强大的特性,为政企提供了高效、便捷的沟通协作解决方案,…...
craw4ai 抓取实时信息,与 mt4外行行情结合实时交易,基本面来觉得趋势方向,搞一个外汇交易策略
结合实时信息抓取、MT4行情数据、基本面分析的外汇交易策略框架,旨在通过多维度数据融合提升交易决策质量:行不行不知道先试试,理论是对的,只要基本面方向没错 策略名称:Tri-Sync 外汇交易系统 核心理念 「基本面定方…...
Linux之守护进程
在Linux系统中,进程一般分为前台进程、后台进程和守护进程3类。 一 守护进程 定义: 1.守护进程是在操作系统后台运行的一种特殊类型的进程,它独立于前台用户界面,不与任何终端设备直接关联。这些进程通常在系统启动时启动,并持…...

LiquiGen流体导入UE
导出ABC 导出贴图 ABC导入Houdini UE安装SideFX_Labs插件 C:\Users\Star\Documents\houdini20.5\SideFXLabs\unreal\5.5 参考: LiquiGenHoudiniUE血液流程_哔哩哔哩_bilibili...
使用react进行用户管理系统
今天通了一遍使用react进行用户管理系统的文档,以及跟随步骤实现了一遍,我大概梳理一下实现思路。 首先我们构建基本用户管理应用,需要数据库存储个人资料,我们先去supabase注册然后创建自己的数据库然后设置密码,然后…...
SpringBoot的java应用中,慢sql会导致CPU暴增吗
是的,在 Spring Boot 的 Java 应用中,慢 SQL 同样可能导致 CPU 暴增。虽然数据库服务器的 CPU 通常是主要压力点,但应用服务器(Java 进程)的 CPU 也可能间接受到影响,具体原因和机制如下: 1. 数…...

Ubuntu下编译mininim游戏全攻略
目录 一、安装mininim 软件所依赖的库(重点是allegro游戏引擎库)二、编译mininim 软件三、将mininim打包给另一个Ubuntu系统使用四、安卓手机运行mininim 一、安装mininim 软件所依赖的库(重点是allegro游戏引擎库) 1. 用apt-get…...

uniapp uni-id Error: Invalid password secret
common文件夹下uni-config-center文件夹下新建uni-id,新建config.json文件 复制粘贴以下代码,不要自己改,格式容易错 {"passwordSecret": [{"type": "hmac-sha256","version": 1}], "passwordStrength&qu…...
用 Appuploader,让 iOS 上架流程真正“可交接、可记录、可复用”:我们是这样实现的
你可能听说过这样一类人:上线必找他,证书只有他有,Transporter 密码在他电脑上,描述文件什么时候过期,只有他知道。 如果你团队里有这样一位“发布大师”,他可能是个英雄——但也是个单点风险源。 我们团…...

第十二节:第三部分:集合框架:List系列集合:特点、方法、遍历方式、ArrayList集合的底层原理
List系列集合特点 List集合的特有方法 List集合支持的遍历方式 ArrayList集合的底层原理 ArrayList集合适合的应用场景 代码:List系列集合遍历方式 package com.itheima.day19_Collection_List;import java.util.ArrayList; import java.util.Iterator; import jav…...

【办公类-18-07】20250527屈光检查PDF文件拆分成多个pdf(两页一份,用幼儿班级姓名命名文件)
背景需求: 今天春游,上海海昌公园。路上保健老师收到前几天幼儿的屈光视力检查单PDF。 她说:所有孩子的通知都做在一个PDF里,我没法单独发给班主任。你有什么办法拆开来? 我说:“没问题,问deep…...

AI Agent的“搜索大脑“进化史:从Google API到智能搜索生态的技术变革
AI Agent搜索革命的时代背景 2025年agent速度发展之快似乎正在验证"2025年是agent元年"的说法,而作为agent最主要的应用工具之一(另外一个是coding),搜索工具也正在呈现快速的发展趋势。Google在2024年12月推出Gemini Deep Research࿰…...

Arduino学习-跑马灯
1、效果 2、代码 /**** 2025-5-30 跑马灯的小程序 */ //时间间隔 int intervaltime200; //初始化函数 void setup() {// put your setup code here, to run once://设置第3-第7个引脚为输出模式for(int i3;i<8;i){pinMode(i,OUTPUT);} }//循环执行 void loop() {// put you…...
python创建args命令行分析
这段代码是一个使用 Python 的 argparse 模块创建命令行界面的示例。它定义了一系列的命令行参数和子命令,通常用于构建和管理软件项目或版本控制系统中的操作。以下是对代码的逐行分析: 1初始化 ArgumentParser parser argparse.ArgumentParser(forma…...

2. 手写数字预测 gui版
2. 手写数字预测 gui版 背景1.界面绘制2.处理图片3. 加载模型4. 预测5.结果6.一点小问题 背景 做了手写数字预测的模型,但是老是跑模型太无聊了,就配合pyqt做了一个可视化界面出来玩一下 源代码可以去这里https://github.com/Leezed525/pytorch_toy拿 …...
js数据类型有哪些?它们有什么区别?
js数据类型共有8种,分别是undefined,null,boolean,number,string,Object,symbol,bigint symbol和bigint是es6中提出来的数据类型 symbol创建后独一无二不可变的数据类型,它主要是为了解决出现全局变量冲突的问题 bigint 是一种数字类型的数据,它可以表示任意精度格式的整数,…...
大模型应用开发第五讲:成熟度模型:从ChatGPT(L2)到未来自主Agent(L4)
大模型应用开发第五讲:成熟度模型:从ChatGPT(L2)到未来自主Agent(L4) 资料取自《大模型应用开发:动手做AI Agent 》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之…...

特别篇-产品经理(三)
一、市场与竞品分析—竞品分析 1. 课后总结 案例框架:通过"小新吃蛋糕"案例展示行业分析方法,包含四个关键步骤: 明确目标行业调研确定竞品分析竞争策略输出结论 1)行业背景分析方法 PEST分析法:从四个…...
IP地址扫描 网络状态监测 企业网络管理 免安装,企业级 IP 监控防未授权接入
各位网络小卫士们!今天咱来聊聊一款超厉害的局域网IP地址扫描工具——IPScaner V1.22。这玩意儿就像网络世界的大侦探,能快速识别网络里设备的状态和资源分布。下面咱就好好唠唠它的那些事儿。 软件获取夸克网盘下载 先说说它的核心功能。第一个是IP…...

【unity游戏开发——编辑器扩展】AssetDatabase公共类在编辑器环境中管理和操作项目中的资源
注意:考虑到编辑器扩展的内容比较多,我将编辑器扩展的内容分开,并全部整合放在【unity游戏开发——编辑器扩展】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言一、AssetDatabase常用API1、创建资源1.1 API1.2 示例 …...

BLE协议全景图:从0开始理解低功耗蓝牙
BLE(Bluetooth Low Energy)作为一种针对低功耗场景优化的通信协议,已经广泛应用于智能穿戴、工业追踪、智能家居、医疗设备等领域。 本文是《BLE 协议实战详解》系列的第一篇,将从 BLE 的发展历史、协议栈结构、核心机制和应用领域出发,为后续工程实战打下全面认知基础。 …...

【机器学习基础】机器学习入门核心算法:GBDT(Gradient Boosting Decision Tree)
机器学习入门核心算法:GBDT(Gradient Boosting Decision Tree) 1. 算法逻辑2. 算法原理与数学推导2.1 目标函数2.2 负梯度计算2.3 决策树拟合2.4 叶子权重计算2.5 模型更新 3. 模型评估评估指标防止过拟合 4. 应用案例4.1 金融风控4.2 推荐系…...

基于开源AI大模型AI智能名片S2B2C商城小程序源码的销售环节数字化实现路径研究
摘要:在数字化浪潮下,企业销售环节的转型升级已成为提升竞争力的核心命题。本文基于清华大学全球产业研究院《中国企业数字化转型研究报告(2020)》提出的“提升销售率与利润率、打通客户数据、强化营销协同、构建全景用户画像、助…...

Spring Cache核心原理与快速入门指南
文章目录 前言一、Spring Cache核心原理1.1 架构设计思想1.2 运行时执行流程1.3 核心组件协作1.4 关键机制详解1.5 扩展点设计1.6 与Spring事务的协同 二、快速入门实战三、局限性3.1 多级缓存一致性缺陷3.2 分布式锁能力缺失3.3 事务集成陷阱 总结 前言 在当今高并发、低延迟…...

Redisson学习专栏(四):实战应用(分布式会话管理,延迟队列)
文章目录 前言一、为什么需要分布式会话管理?1.1 使用 Redisson 实现 Session 共享 二、订单超时未支付?用延迟队列精准处理2.1 RDelayedQueue 核心机制2.2 订单超时处理实战 总结 前言 在现代分布式系统中,会话管理和延迟任务处理是两个核心…...