网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

MQTT的基本特性 | 第二部分

更新时间:2026年03月27日   作者:spoto   标签(Tag):
先决条件/前提条件 –
  • 消息队列遥测传输协议(MQTT)
  • MQTT的基本特性 | 第1部分
保留的消息:在MQTT协议中,当客户端向代理发布消息时,默认情况下,“retain”标志的值为“false”。 在这种情况下,中介只需将消息传递给目标订阅客户,然后就无需再处理该消息了。 但是,如果订阅了该消息的客户端当前处于离线状态,那么该客户端就永远无法收到该消息了,因为消息会被代理服务器立即丢弃。为了解决这个问题,可以使用“保留标志”来避免这种情况的发生。 那些被标记为“true”的消息,将会被交易所保留下来。 因此,即使订阅者客户端处于离线状态,这些消息仍然会被存储起来,待订阅者客户端重新上线后,这些消息仍会被发送给相应的客户端。对于某个特定主题,代理只会存储一条相关的消息。 因此,如果关于同一主题的其他消息也设置了“保留标志”为“true”,那么之前的消息就会被新的消息所替代。 这样做是为了让客户能够轻松获取最新的已知数值。启用/禁用消息保留功能:为了实现这一功能,可以在发布的消息中同时设置“retain”标志。不过,一旦将该标志设置为“false”,被保留的消息就无法再被激活了。为了禁用此功能,客户端需要向同一个主题发送一个空消息,同时让“retain”标志保持为“true”。这样的操作不会干扰该主题上正在进行的任何通信,因此能够有效地实现功能的禁用。例如——在下面的例子中,传感器会将其当前的值发送给代理服务器,同时该消息会被标记为“true”。处于在线状态的客户端会立即收到这条消息。由于该消息被标记为“true”,因此代理服务器会保存这条消息,并在客户端重新上线后将其传递给另一个客户端。因此,即使是在线状态之外的客户端,在重新上线后也能获得最新的传感器值。图/图片 –保留的消息 在下面的示意图中,客户端在两条消息发布完成后才上线。因此,它只会接收到那些带有“保留标志”的消息。图 –Mosquitto:保留消息的示意图优点:
  • 当离线客户端重新连接网络时,系统会立即向这些客户端发送最新的状态更新信息。
  • 如果该主题上没有任何新的数据被发布,那么当客户连接到系统时,系统会向他们提供最新的已知数据。这样,即使系统中没有新的活动发生,客户仍然可以了解系统的当前状态。
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料