博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

🍅uniapp微信小程序🍅面试题软考题免费使用,还可以使用微信支付,扫码加群。由于维护成本问题得不到解决,可能将停止线上维护。

🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

Java项目案例《100套》
https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》

https://blog.csdn.net/qq_57756904/category_12173599.html

有需求代码永远写不完,而方法才是破解之道,抖音有实战视频课程,某马某千等培训都是2万左右,甚至广东有本科院校单单一年就得3万4年就12万学费,而且还没有包括吃饭的钱。所以很划算了。另外博客左侧有源码阅读专栏,对于求职有很大帮助,当然对于工作也是有指导意义等。在大城市求职,你面试来回一趟多多少少都在12块左右,而且一般不会一次性就通过,还得面试几家。而如果你对源码以及微服务等有深度认识,这无疑给你的面试添砖加瓦更上一层楼。

最后再送一句:最好是学会了,而不是学废了!!

2

MQTT 核心知识点详解

MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅协议,专为低带宽、高延迟或不稳定的网络环境设计,广泛应用于物联网(IoT)、移动应用和实时消息推送。


1. MQTT 基础概念

1.1 协议特点

  • 轻量级:头部最小仅 2字节,适合嵌入式设备。

  • 基于发布/订阅模型:解耦消息生产者和消费者。

  • 支持 QoS(服务质量):提供 3 种消息可靠性级别。

  • 低功耗:适合电池供电设备(如传感器)。

  • 支持遗嘱消息(LWT):设备异常断开时发送预设消息。

1.2 通信角色

角色作用
Publisher发布消息到某个 Topic(如传感器上传数据)。
Subscriber订阅感兴趣的 Topic,接收消息(如服务器接收传感器数据)。
Broker消息代理(服务器),负责路由消息(如 Mosquitto、EMQX、HiveMQ)。

2. MQTT 核心机制

2.1 Topic(主题)

  • 层级结构:用 / 分隔,如 sensor/temperature/room1。

  • 通配符:

    • +:单层匹配(如 sensor/+/room1 匹配 sensor/temperature/room1)。

    • #:多层匹配(如 sensor/# 匹配 sensor/temperature/room1 和 sensor/humidity)。

2.2 QoS(服务质量)

QoS 等级描述消息是否重复是否保证到达
0最多一次(At most once)❌❌
1至少一次(At least once)✔️✔️
2恰好一次(Exactly once)✔️✔️

适用场景:

  • QoS 0:可容忍丢失的数据(如周期性传感器数据)。

  • QoS 1:重要但可重复的消息(如控制指令)。

  • QoS 2:关键数据(如支付交易)。

2.3 保留消息(Retained Message)

  • Broker 会保存 Topic 的最后一条消息,新订阅者立即收到该消息。

  • 适用场景:设备上线后立即获取最新状态(如智能灯的最后开关状态)。

2.4 遗嘱消息(Last Will and Testament, LWT)

  • 客户端异常断开时,Broker 自动发布预设消息。

  • 用途:检测设备离线状态。

# 示例(Python Paho-MQTT)
client.will_set("device/status", "offline", qos=1, retain=True)

3. MQTT 连接流程

3.1 CONNECT 报文

客户端连接 Broker 时发送:

  • Client ID:唯一标识(如 device_123)。

  • Clean Session:

    • True:Broker 不保存会话状态(适合临时设备)。

    • False:Broker 保存订阅和未确认消息(适合持久连接)。

  • Keep Alive:心跳间隔(秒),超时后 Broker 认为连接断开。

3.2 认证与安全

  • 用户名/密码:明文传输(建议配合 TLS 加密)。

  • TLS/SSL:加密通信(端口通常 8883)。

  • ACL(访问控制):限制客户端对 Topic 的读写权限。


4. 常用 MQTT Broker

Broker特点
Mosquitto轻量级,适合嵌入式和小规模部署。
EMQX高性能,支持集群和规则引擎(企业级)。
HiveMQ商业版,支持 MQTT 5.0 和插件扩展。
AWS IoT Core云服务,集成 AWS 生态(如 Lambda、DynamoDB)。

5. MQTT 客户端开发示例

5.1 Python(Paho-MQTT)

import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):
    print("Connected with code", rc)
    client.subscribe("sensor/temperature")

def on_message(client, userdata, msg):
    print(f"Received: {msg.topic} {msg.payload.decode()}")

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect("broker.hivemq.com", 1883, 60)
client.loop_forever()

5.2 JavaScript(MQTT.js)

const mqtt = require('mqtt');
const client = mqtt.connect('mqtt://broker.hivemq.com');

client.on('connect', () => {
  client.subscribe('sensor/temperature');
  client.publish('sensor/temperature', '25°C');
});

client.on('message', (topic, message) => {
  console.log(`Received: ${topic} ${message.toString()}`);
});

6. MQTT 5.0 新特性

  • 原因码(Reason Code):更精细的错误反馈。

  • 共享订阅(Shared Subscription):实现负载均衡(多个消费者分担消息)。

  • 消息过期(Message Expiry):设置消息的存活时间。

  • 流量控制(Flow Control):限制客户端发送速率。


7. 典型应用场景

  1. 物联网(IoT)

    • 传感器数据上报(如温度、湿度)。

    • 远程设备控制(如智能家居)。

  2. 移动推送

    • 实时通知(如聊天消息、订单状态)。

  3. 车联网

    • 车辆状态监控(如 GPS 位置、故障报警)。

  4. 工业 4.0

    • 设备状态监控与预测性维护。


8. 常见问题与优化

8.1 消息堆积

  • 问题:低速消费者导致 Broker 积压消息。

  • 解决:

    • 增加消费者(共享订阅)。

    • 设置 max_queued_messages 限制队列长度。

8.2 安全性

  • 风险:默认无加密(易受窃听)。

  • 方案:

    • 使用 TLS(mqtts://)。

    • 客户端认证(证书或 Token)。

8.3 性能优化

  • Broker 集群:横向扩展(如 EMQX 集群)。

  • 持久化:消息存储到数据库(如 Redis、PostgreSQL)。


9. 学习资源

  • 官方文档:MQTT 5.0 协议规范

  • 工具:

    • MQTTX(跨平台客户端)。

    • Mosquitto(本地测试 Broker)。

  • 书籍:《MQTT Essentials》、《Building IoT Applications with MQTT》


掌握 MQTT 的核心机制和 QoS 策略后,可以高效构建实时、低功耗的物联网系统。实际项目中需根据场景选择合适的 Broker 和安全方案。

3

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐