保留消息
更新时间:
本文为您介绍MQTT特性保留消息。
功能介绍
保留消息(Retained Message)是指客户端在某个主题上发布一条消息时,指定该消息被服务器保留,
后续订阅该主题的新客户端都将立即接收到这条保留消息,而无需等待新的消息发布。
使用限制
目前仅专业版和铂金版支持该功能,且需要提交工单申请。
同一个主题下只能存在一条保留消息,新发布的保留消息会覆盖之前的保留消息。
使用通配符订阅时,限制最多模糊匹配父、子Topic的数量上限为100个。
使用场景
状态更新:在IoT应用中,设备可以定期更新其状态,例如温度、湿度等,并将该消息保留。当新的客户端连接并订阅时,将立即得到设备的最新状态。
系统配置:系统可以发布包含某种配置信息的保留消息,新加入的设备可以直接获取最新配置信息。
最后已知值:在股票交易或者报价场景下,最后的报价可作为保留消息发送,以确保所有新的订阅者都可以直接获取到最后一个交易价。
欢迎信息:例如,新客户端订阅某个聊天室主题,可以立即收到该聊天室的欢迎消息。
消息示例
例如,你有一个气象站的设备,它定期将温度数据发布到主题"weather/station1/temperature"上。发布时,设定了保留标志,将该消息指定为保留消息。
PUBLISH
Topic: weather/station1/temperature
Payload: 24.5
QoS: 1
Retain: 1 // 指示代理保留这条消息此后,即便这个设备没有发布新的温度数据,当有新客户端订阅"weather/station1/temperature"时,如下:
SUBSCRIBE
Topic Filter: weather/station1/temperature
QoS: 1那么,该客户端将立刻接收到气象站最后发布的温度数据(即保留消息):
PUBLISH
Topic: weather/station1/temperature
Payload: 24.5
QoS: 1
Retain: 1 // 客户端会被告知这是一个保留的消息通过保留消息,新客户端可以立即获得温度状态,而不需要等待下一次更新。这增加了系统的响应能力并为新参与者提供了即时的上下文环境。
该文章对您有帮助吗?