MQTT消息

发布时间:2026/7/31 1:17:21

MQTT消息 对于高频发布的状态消息发布时设置服务质量为0保留为false。对于低频发布的控制消息发布时设置服务质量为2希望新订阅者启动时或旧订阅者重启时每次都收到则设置保留为true如果不希望每次都收到则设置保留为false。根据业务场景选择QoS等级例如‌设备数据采集‌使用QoS 0降低网络负担‌控制指令‌使用QoS 1确保指令送达‌高价值业务‌采用QoS 2保障唯一性 ‌需要注意的是 MQTT 发布与订阅操作中的 QoS 代表了不同的含义发布时的 QoS 表示消息发送到 MQTT 服务器 使用的 QoS 等级订阅时的 QoS 表示 MQTT Broker 向自己转发消息时可以使用的最大 QoS 等级。需要保障发送与订阅的 QoS 一致才能确保最终收到的消息是固定的 QoS 等级否则会出现消费降级的情况。例如A 发送的消息 QoS 为 2B 订阅的消息 QoS 为1则最终接收到消息的 QoS 为 1。保留消息的作用和用法MQTT Retain 消息的主要作用是确保即使客户端如设备离线或延迟订阅主题仍能接收最新消息让设备每次启动后都收立即收到最后设置的消息。核心功能‌消息保存‌当消息发布时设置 Retain 标志为 true服务器Broker 会保存该消息直到被新消息替换或过期。 一个Topic只能有一条Retained消息发布新的Retained 消息将覆盖老的 Retained 消息所以想删除一个 Retained 消息也很简单只要向这个主题发布一个 Payload 长度为 0 的 Retained 消息就可以了‌离线场景适用‌客户端离线期间服务器持续保存最新消息。重新上线后客户端可立即接收保留消息无需等待新消息发布。‌设备重启适配‌设备重启或重新订阅主题时能立即获取到离线期间的服务端保留消息。典型应用场景‌智能家居温度检测‌温度检测设备定时发布室温数据显示设备重启后仍能获取最新数据 ‌‌‌广告屏管理‌广告屏夜间休眠时接收保留消息白天开机后直接显示最新广告内容 ‌‌‌工业控制‌设备周期性发送配置信息即使客户端延迟订阅也能获取最新配置 ‌‌注意事项每个主题仅保存一份最新保留消息旧消息会被覆盖可通过设置消息过期时间自动删除旧保留消息新的订阅者在订阅成功后也会立即收到订阅的主题的Retained 消息如果订阅者重复订阅一个主题也会被当做新的订阅者然后收到 Retained true的 消息。重启客户端重新订阅也是新的订阅者。Broker 收到 Retained 消息后会单独保存一份再向已订阅者发送一份普通的消息Retained 标识为 0。当有新订阅者的时候 Broker 会把保存的这条消息发给新订阅者Retained 标识为 1。

相关新闻