如果你平时做的是单片机、RTOS 或者简单的 socket 通信,一旦项目要"上云",画风往往就变了:设备要上报数据、要收下发指令、还要考虑弱网和断线重连,自己写一套 TCP 私有协议不但累,还容易出坑。MQTT 就是这时候绕不开的东西——它不复杂,但真要把 QoS、会话保持、遗嘱消息这些细节用对,只靠"会调库"是不够的。

先说说这门课适合哪些人补

  • 写过串口、CAN、TCP,但没接触过标准物联网协议的嵌入式方向学习者;
  • 做过后端或云平台,知道 MQTT 这个名字,却讲不清连接、订阅、发布这套流程怎么走通;
  • 在项目里用过 MQTT 客户端库,遇到"消息丢了""重连后订阅没了""QoS2 到底发了几次"这类问题靠试错解决的人。

如果你只是想随便找个库把数据传上去,这门课可能显得啰嗦;但只要你想把通信这块做扎实,报文结构和 QoS 这两块是躲不掉的。

它讲什么,重点在哪

内容围绕 MQTT 协议本身展开,不是泛泛讲物联网概念。比较关键的有三块:一是协议报文的具体格式,CONNECT、PUBLISH、SUBSCRIBE 这些报文里每个字段什么含义、标志位怎么设,理解了这层,抓包看日志才不至于懵;二是 QoS 0/1/2 三种等级各自的交互过程和代价,什么场景用哪一级,为什么 QoS2 会有额外的开销;三是主题与订阅机制,通配符怎么匹配、保留消息和遗嘱消息在什么情况下起作用。

环境侧会涉及 EMQX 的搭建和配置,也就是有一个能实际连上去、能抓包、能发消息的 Broker 用来验证。协议这种东西,光看文字很容易以为懂了,真上手连一次、断一次、重连一次,印象完全不同。

配套材料和练习怎么用

资料里带了视频、笔记、代码和课件。建议的用法是:先跟着视频过一遍概念,拿笔记对着报文格式把关键字段勾一遍,然后重点放在代码上——自己改一改客户端参数,故意把网断掉看会发生什么,把 QoS 从 0 调到 2 观察交互差异。课件可以用来对着抓包结果核对,不要只当成传参手册。

需要提醒的是,MQTT 本身不难,难的是"边界情况":网络抖动时客户端怎么重连、Broker 重启后会话在不在、订阅关系在断线后要不要恢复。这些在动手环节里比死记协议字段更值得花时间。

看完应该能回答这几个问题

  • 一条 PUBLISH 报文从客户端发出到被另一个客户端收到,中间经过了哪些环节?
  • QoS1 和 QoS2 在协议层面差在哪,为什么说它们"至少一次"和"恰好一次"?
  • 主题里的通配符有哪些,各自的匹配规则和使用限制是什么?
  • 客户端断线重连后,之前的订阅和未确认的消息会怎样?
  • 遗嘱消息和保留消息分别解决什么场景的问题?

能把这些说清楚,再拿任何一门语言的 MQTT 库来用,心里就有底了。这门课的价值不在于让你多记几个 API,而是让你在设备连不上云、消息莫名丢失的时候,知道该从哪一层去查。

尚硅谷嵌入式技术MQTT|视频|笔记|大纲

MQTT协议深度解析与实践

编辑点评

系统讲解MQTT协议原理和应用,涵盖EMQX搭建、协议报文解析、QoS机制、主题订阅等,适合对物联网协议感兴趣的学习者。

⭐ 编辑推荐

全面解析MQTT协议,从入门到实战,助你掌握物联网通信核心技术。

课程亮点

• MQTT协议原理深入讲解
• EMQX环境搭建与配置
• 协议报文格式解析
• QoS机制与主题订阅

课程目录

尚硅谷嵌入式技术MQTT
视频
笔记.zip  [0.6MB]
大纲.zip  [0.2MB]
代码.zip  [27.9MB]
课件.zip  [6.9MB]
资料.zip  [260.3MB]
01-MQTT视频简介.mp4  [39.7MB]
02-MQTT课程概览.mp4  [117.8MB]
03-MQTT入门案例-EMQX简介.mp4  [21.7MB]
04-MQTT入门案例-EMQX环境搭建.mp4  [44.8MB]
05-MQTTX简介.mp4  [8.9MB]
06-MQTT协议的应用场景以及特点和常见的概念.mp4  [47.9MB]
07-MQTTX客户端工具的使用.mp4  [92.6MB]
08-MQTT协议的控制报文简介以及常见的报文类型说明.mp4  [28.1MB]
09-MQTT报文格式-简介.mp4  [20.5MB]
10-MQTT报文格式-固定报头简介.mp4  [37.5MB]
11-MQTT报文格式-可变报头以及有效载荷介绍.mp4  [48.2MB]
12-MQTT报文验证-Wireshark工具抓取通讯报文数据.mp4  [50.0MB]
13-QOS简介.mp4  [54.4MB]
14-Qos取值为0的底层通讯原理以及消息丢失原因说明.mp4  [20.7MB]
15-Qos取值为1的底层通讯原理.mp4  [21.2MB]
16-Qos取值为1消息重复原因说明.mp4  [23.4MB]
17-Qos取值为2的底层通讯原理说明.mp4  [43.2MB]
18-Qos取值为2保证消息不丢失原因说明以及Qos取值为1出现消息重复问题说明.mp4  [46.8MB]
19-Qos取值为2的为什么可以保证消息不重复原因说明.mp4  [32.7MB]
20-Qos常见取值的应用场景.mp4  [24.1MB]
21-主题详解-主题介绍.mp4  [8.3MB]
22-主题详解-主题通配符+号.mp4  [14.5MB]
23-主题详解-主题通配符号.mp4  [16.1MB]
24-主题详解-系统主题.mp4  [40.4MB]
25-会话介绍.mp4  [31.9MB]
26-消息详解-保留消息的介绍.mp4  [16.5MB]
27-消息详解-保留消息的使用.mp4  [42.2MB]
28-消息讲解-消息过期间隔的基本介绍.mp4  [32.7MB]
29-消息详解-消息过期间隔的特点演示.mp4  [8.8MB]
30-消息详解-遗嘱消息的基本介绍.mp4  [13.9MB]
31-消息详解-遗嘱消息的原理介绍.mp4  [24.3MB]
32-消息详解-遗嘱消息的使用演示.mp4  [8.7MB]
33-消息详解-延迟发布的基本介绍.mp4  [23.3MB]
34-消息详解-延迟发布的功能演示.mp4  [8.3MB]
35-消息详解-用户属性基本介绍以及演示.mp4  [13.0MB]
36-订阅详解-订阅选项的基本介绍.mp4  [10.1MB]
37-订阅详解-订阅选项QoS介绍以及演示.mp4  [15.0MB]
38-订阅详解-订阅选项No Local介绍以及演示.mp4  [26.3MB]
39-订阅详解-订阅选项Retain As Published介绍.mp4  [11.8MB]
40-订阅详解-订阅选项Retain As Published演示.mp4  [6.0MB]
41-订阅详解-订阅选项Retain Handling介绍以及演示.mp4  [17.3MB]
42-订阅详解-共享订阅介绍.mp4  [19.5MB]
43-订阅详解-共享订阅分类介绍.mp4  [20.5MB]
44-订阅详解-共享订阅演示.mp4  [20.4MB]
45-订阅详解-共享订阅负载均衡算法介绍.mp4  [15.4MB]
46-订阅详解-排它订阅演示.mp4  [22.1MB]
47-订阅详解-自动订阅演示.mp4  [11.5MB]
48-MQTT Dashboard之访问控制-认证介绍以及演示1.mp4  [23.6MB]
49-MQTT Dashboard之访问控制-认证演示2数据库环境搭建.mp4  [29.6MB]
50-MQTT Dashboard之访问控制-认证演示3认证器链.mp4  [14.0MB]
51-MQTT Dashboard之访问控制-授权介绍.mp4  [9.5MB]
52-MQTT Dashboard之访问控制-ACL文件授权配置.mp4  [22.9MB]
53-MQTT Dashboard之访问控制-内置数据库授权配置.mp4  [21.8MB]
54-MQTT Dashboard之黑名单功能.mp4  [12.6MB]
55-MQTT Dashboard之链接抖动检查.mp4  [9.9MB]
56-MQTT Dashboard之数据集成-数据集成概述.mp4  [21.8MB]
57-MQTT Dashboard之数据集成-工作原理介绍Sink和Source连接器.mp4  [13.7MB]
58-MQTT Dashboard之数据集成-工作原理介绍规则引擎.mp4  [12.7MB]
59-MQTT Dashboard之数据集成-入门案例演示.mp4  [21.6MB]
60-MQTT Dashboard之数据集成-连接器案例一Redis环境搭建.mp4  [29.8MB]
61-MQTT Dashboard之数据集成-连接器案例一Redis连接器使用.mp4  [29.4MB]
62-MQTT Dashboard之数据集成-连接器案例二Kafka环境准备.mp4  [44.4MB]
63-MQTT Dashboard之数据集成-连接器案例二Kafka连接器使用.mp4  [16.9MB]
64-MQTT Dashboard之数据集成-连接器案例二发送消息到Kafka中.mp4  [45.2MB]
65-MQTT Dashboard之数据集成-SQL语法FROMSELECT 和 WHERE 子句.mp4  [26.2MB]
66-MQTT Dashboard之数据集成-SQL语法FOREACHDO 和 INCASE 子句语法介绍.mp4  [14.9MB]
67-MQTT Dashboard之数据集成-SQL语法FOREACH字句使用.mp4  [18.0MB]
68-MQTT Dashboard之数据集成-SQL语法DO子句使用.mp4  [10.6MB]
69-MQTT Dashboard之数据集成-SQL语法INCASE子句使用.mp4  [19.7MB]
70-MQTT Dashboard之数据集成-SQL语法CASE WHEN子句使用.mp4  [13.9MB]
71-MQTT Dashboard之数据集成-SQL函数使用.mp4  [22.4MB]
72-MQTT Dashboard之数据集成-WebHook功能使用.mp4  [20.5MB]
73-MQTT Dashboard之日志管理-日志介绍.mp4  [13.2MB]
74-MQTT Dashboard之日志管理-日志配置.mp4  [53.4MB]
75-MQTT客户端编程之VUE-前端项目环境搭建.mp4  [26.2MB]
76-MQTT客户端编程之VUE-链接建立表单参数绑定.mp4  [34.5MB]
77-MQTT客户端编程之VUE-建立链接和断开连接.mp4  [56.0MB]
78-MQTT客户端编程之VUE-订阅主题.mp4  [46.9MB]
79-MQTT客户端编程之VUE-取消订阅.mp4  [43.8MB]
80-MQTT客户端编程之VUE-发送消息.mp4  [36.6MB]
81-MQTT客户端编程之Java-链接建立.mp4  [43.2MB]
82-MQTT客户端编程之Java-发送消息.mp4  [26.9MB]
83-MQTT客户端编程之Java-订阅主题.mp4  [36.3MB]
84-MQTT客户端编程之spring-integration-mqtt-环境搭建.mp4  [38.3MB]
85-MQTT客户端编程之spring-integration-mqtt-链接工厂配置.mp4  [23.5MB]
86-MQTT客户端编程之spring-integration-mqtt-订阅主题以及接收消息.mp4  [84.6MB]
87-MQTT客户端编程之spring-integration-mqtt-发送消息之出站消息处理器配置.mp4  [34.3MB]
88-MQTT客户端编程之spring-integration-mqtt-发送消息之消息网关配置.mp4  [39.8MB]
89-智能灯泡案例需求介绍以及数据库环境准备.mp4  [18.5MB]
90-智能灯泡案例项目基础环境搭建.mp4  [29.0MB]
91-智能灯泡案例需求1实现.mp4  [128.8MB]
92-智能灯泡案例需求2实现.mp4  [64.3MB]
93-智能灯泡案例需求3实现.mp4  [106.9MB]

适合人群

  • 物联网开发者
  • 嵌入式系统工程师
  • 对MQTT协议感兴趣的学习者

学习收获

掌握MQTT协议原理
学会EMQX搭建与配置
理解QoS机制与主题订阅

祝您学习愉快!

学有所成,前程似锦!