mqtt中的retained是什么意思

MQTT 中的 retained(保留消息)是一个重要概念,主要作用如下:

基本定义

retained 是 MQTT 消息的一个标志位,当发布者发送消息时可以设置 RETAIN 标志为 true,这样的消息会被 MQTT 代理(broker)保存。

主要特性

  • 消息持久化:Broker 会为每个主题保存最后一条带有 retain 标志的消息
  • 新订阅者立即获取:当新的客户端订阅某个主题时,会立即收到该主题的最后一条保留消息
  • 自动更新:当有新的保留消息发布到同一主题时,旧的保留消息会被替换
  • 清除机制:发布一条空内容(payload 为空)的保留消息可以清除该主题的保留消息

使用场景

  1. 设备状态报告:传感器发布温度、湿度等状态信息
  2. 配置信息:系统配置参数的发布
  3. 在线状态:设备的上下线状态通知
  4. 初始数据:确保新订阅者能立即获得最新数据

工作示例

1
2
3
4
5
6
7
8
# 客户端A发布保留消息
PUBLISH topic:"home/temperature" payload:"25.6" retain:true

# 客户端B稍后订阅该主题
SUBSCRIBE topic:"home/temperature"

# 客户端B会立即收到之前发布的保留消息
MESSAGE topic:"home/temperature" payload:"25.6" retain:true

保留消息机制使得 MQTT 非常适合物联网场景,新设备上线时能立即获取到最新的状态信息,而不需要等待下一次数据更新。