MQTT 中的 retained
(保留消息)是一个重要概念,主要作用如下:
基本定义
retained
是 MQTT 消息的一个标志位,当发布者发送消息时可以设置 RETAIN
标志为 true,这样的消息会被 MQTT 代理(broker)保存。
主要特性
- 消息持久化:Broker 会为每个主题保存最后一条带有 retain 标志的消息
- 新订阅者立即获取:当新的客户端订阅某个主题时,会立即收到该主题的最后一条保留消息
- 自动更新:当有新的保留消息发布到同一主题时,旧的保留消息会被替换
- 清除机制:发布一条空内容(payload 为空)的保留消息可以清除该主题的保留消息
使用场景
- 设备状态报告:传感器发布温度、湿度等状态信息
- 配置信息:系统配置参数的发布
- 在线状态:设备的上下线状态通知
- 初始数据:确保新订阅者能立即获得最新数据
工作示例
1 |
|
保留消息机制使得 MQTT 非常适合物联网场景,新设备上线时能立即获取到最新的状态信息,而不需要等待下一次数据更新。