当前位置: 首页 > news >正文

MQTT协议

MQTT(Message Queuing Telemetry Transport)是一种轻量级发布/订阅(Publish/Subscribe)消息协议,主要用于物联网(IoT)、机器人、移动设备、传感器网络带宽有限、网络不稳定、设备资源受限的环境。

在机器人云平台、ROS 云通信、设备远程控制等场景中,MQTT 是非常常见的通信协议。

一、MQTT整体架构

MQTT采用Broker中心架构

Publisher
|
v
+--------+
| Broker |
+--------+
^ ^
/ \
Subscriber Subscriber

核心角色:

1 Publisher(发布者)

发布消息的客户端,例如:

机器人

传感器

IoT设备

服务器

例如:

机器人发布位置信息
topic: robot/pose

2 Subscriber(订阅者)

订阅某个Topic(主题)的客户端。

例如:

云服务器订阅:

robot/pose

收到机器人位置。

3 Broker(代理服务器)

MQTT系统核心。

作用:

  1. 接收消息
  2. 根据Topic匹配订阅
  3. 转发给订阅者

常见Broker:

  • Mosquitto
  • EMQX
  • HiveMQ
  • RabbitMQ MQTT插件

二、MQTT通信模型

MQTT核心思想:

发布 / 订阅模型

而不是传统:

客户端 → 服务器

MQTT是:

客户端 → Broker → 客户端

例如:

机器人发布数据
Topic:
robot/battery

服务器订阅:

robot/battery

数据流程:

Robot
|
publish
v
Broker
|
v
Cloud Server

发布者和订阅者完全解耦

三、Topic(主题)

MQTT使用Topic字符串来进行消息路由。

例如:

robot/pose
robot/battery
robot/map
robot/cmd

类似:

文件路径

层级结构:

robot/1/pose
robot/1/battery
robot/2/pose

MQTT通配符

1 单层通配符

+

例如:

robot/+/pose

匹配:

robot/1/pose
robot/2/pose

2 多层通配符

#

例如:

robot/#

匹配:

robot/1/pose
robot/2/battery
robot/3/map

四、MQTT连接流程

MQTT通信流程:

客户端
|
| CONNECT
v
Broker
|
| CONNACK
v
客户端

然后开始:

SUBSCRIBE
PUBLISH

完整流程:

Client → CONNECT → Broker
Broker → CONNACK → Client

Client → SUBSCRIBE → Broker
Broker → SUBACK → Client

Client → PUBLISH → Broker
Broker → PUBLISH → Subscriber

五、MQTT报文结构

MQTT所有消息都是固定结构报文

MQTT报文结构:

+----------------------+
| Fixed Header |
+-----------------------+
| Variable Header |
+-----------------------+
| Payload |
+-----------------------+

1 Fixed Header(固定头)

每个MQTT报文都有。

结构:

1 byte Message Type
1-4 byte Remaining Length

2 Variable Header(可变头)

根据不同报文类型不同。

例如:

CONNECT包含:

协议版本
clientID
keepalive
用户名
密码

3 Payload(消息体)

真正的数据。

例如:

机器人坐标
JSON数据
控制命令

六、MQTT消息类型

MQTT定义14种控制报文

最重要几个:

类型作用
CONNECT客户端连接Broker
CONNACKBroker确认连接
PUBLISH发布消息
SUBSCRIBE订阅Topic
SUBACK订阅确认
UNSUBSCRIBE取消订阅
PINGREQ心跳
PINGRESP心跳响应
DISCONNECT断开连接

七、QoS(服务质量)

MQTT最重要的机制。

QoS解决:

消息可靠传输

MQTT有3个等级

QoS 0

最多一次

At most once

特点:

  • 不保证消息到达
  • 不重发

流程:

PUBLISH

类似:

UDP

适合:

传感器实时数据

QoS 1

至少一次

At least once

流程:

PUBLISH
|
v
PUBACK

可能:

重复消息

适合:

状态信息

QoS 2

只一次

Exactly once

流程:

PUBLISH
|
PUBREC
|
PUBREL
|
PUBCOMP

四次握手。

特点:

绝对不重复

但开销最大。

八、Retained Message(保留消息)

Broker可以保存最后一条消息

新订阅者会立即收到这条消息

例如:

Topic:
robot/status

消息:

online

新客户端订阅:

立即收到online

九、Last Will(遗嘱消息)

MQTT支持:

客户端异常断开时自动发布消息

例如:

机器人设置:

Will Topic:
robot/status

Will Message:
offline

如果机器人断网:

Broker自动发布:

robot/status = offline

云端立刻知道机器人掉线。

十、MQTT vs HTTP

特性MQTTHTTP
通信方式发布订阅请求响应
连接长连接短连接
开销非常小较大
实时性
适合IoTWeb

MQTT头部:

2字节

HTTP头:

几百字节

所以MQTT适合:

弱网络
移动设备
机器人

十一、MQTT优缺点

优点:

1 轻量
2 实时性高
3 低带宽
4 支持离线消息
5 发布订阅解耦

缺点:

1 需要Broker
2 不适合大文件传输

http://www.jsqmd.com/news/661735/

相关文章:

  • 2026年重庆半包装修/全屋装修/室内装修/别墅装修等家装服务推荐:重庆红灯笼装饰工程有限公司,专业服务重庆业主 - 品牌推荐官
  • STM32实战:复用推挽输出模式配置PWM信号(附完整代码)
  • 实战指南:如何用D435i相机与IMU高效运行ORB_SLAM3
  • 别再用BLEU评创造力了!:AGI原创性评估必须切换的5个专业级指标(附开源评估工具包)
  • 2026年桥梁/公路/建筑等养护用毛毡及土工布厂家推荐:临沂珠峰建材有限公司,多类型产品适配多场景 - 品牌推荐官
  • 从DEM精细化编辑到三维场景构建:技术流程与实践解析
  • 如何用QtScrcpy实现跨平台安卓投屏控制:终极实战指南
  • 别再折腾SD卡了!用C#上位机+STM32,5分钟搞定W25Q64字库烧录(附源码)
  • 2026年高性价比GEO优化服务商3家专业推荐与选型参考指南 - 商业小白条
  • 【STM32】实战2—用STM32与ULN2003实现28BYJ-48步进电机的精准调速与方向控制
  • 3D模型秒变Minecraft建筑:零基础掌握ObjToSchematic的创意魔法
  • 2026年铝合金大门厂家推荐:临朐骏宸金属制品有限公司,铝合金别墅大门/庭院大门/铝艺大门全系供应 - 品牌推荐官
  • 保姆级教程:在Windows上用QT Creator和libmodbus调试施耐德PLC(附虚拟串口调试技巧)
  • 告别盲调!用逻辑分析仪和CAN盒深度调试S32K144的CAN PAL组件
  • FPGA开发实战:从Modelsim到Vivado的典型编译报错排查指南
  • Unity WebGL 跨平台部署实战:PC与移动端打包与适配全解析
  • 别再折腾了!Windows 10/11 下 TensorFlow 1.13.2 + CUDA 10.0 环境一键式配置指南(附避坑清单)
  • 如何在移动端部署轻量级CNN?低秩分解实战指南(附PyTorch代码)
  • 如何用罗技鼠标宏在PUBG中实现精准压枪?5步轻松掌握
  • 从iPhone的AirTag到汽车数字钥匙:拆解UWB技术如何悄悄改变我们的生活
  • 告别GUI卡顿:用-no-gui参数命令行高效部署TeX Live全攻略
  • 2026年智能马桶/家装卫浴/增压水龙头等全品类卫浴产品厂家推荐:新郑市王书文洁具商行,凌丹王轻奢卫浴值得信赖 - 品牌推荐官
  • 从有偏到无偏:IPS加权矩阵分解在非随机缺失数据下的实战指南
  • 终极指南:用no-vue3-cron可视化工具彻底告别复杂Cron表达式
  • 从Paramiko到NAPALM:一个网络自动化小白的升级打怪之路(避坑指南)
  • 从实验室到管线:分布式光纤声波传感(DAS)实战避坑指南(附温度传感联动配置)
  • 10个免费Illustrator脚本:提升设计效率的完整解决方案
  • 2026年RETZ进口气动阀产品推荐:裕原流体控制有限公司,高频率/同轴/球阀/蝶阀等全系供应 - 品牌推荐官
  • GD32实战指南:从零构建LED工程(含标准库配置与调试)
  • 告别Mac!Windows电脑也能搞定uni-app云打包成ipa(附爱思助手安装指南)