先决条件–
- 消息队列遥测传输协议(MQTT)
- MQTT的基本功能|套装1
- MQTT的基本功能|套装2
最后遗嘱:
在MQTT中,发布者客户端将有关特定主题的消息发布到Broker。然后,代理将这些消息发布给订阅该主题的客户端。如果发布者/订阅者客户端要终止与代理的连接,则发送DISCONNECT消息。这样,可以正常断开通信。
但是在几种情况下,客户端可能会突然断开连接。在这种情况下,客户端无需发送DISCONNECT消息即可结束与代理的通信。在这种情况下,其他客户端将不会收到有关失败的通知,因此它们将继续等待来自断开连接的客户端的消息。
客户可能由于以下任何原因而突然断开连接–
- 由于连接丢失或硬件故障而导致基础网络故障。
- 在保持有效期内未发送消息。
为了解决这种问题,使用了最后遗留消息的概念。使用此功能,客户端在首次连接到代理时会提供预定义的遗嘱消息。此消息由代理存储。
- 如果客户端突然断开连接,则代理将为所有订阅的客户端在意愿主题上发布意愿消息。
- 如果客户端正常断开连接,则代理将丢弃遗嘱消息。
LWT消息和LWT主题:
- LWT消息定义要发布的消息,作为最终将发布给订阅的客户端的消息。
- LWT主题定义了将在其上发布消息的最后一个主题。
蚊子命令:
- 最后遗嘱主题(强制性)–
如果未提供其他参数,则仅发布最后一个主题将向订阅的客户端发布具有QoS0的非保留零长度消息。--will-topic
- 最后遗嘱消息(可选)–
默认为零长度的空消息。--will-payload
- 最后一次QoS(可选)–
默认为QoS0。--will-qos
- 最后遗留(可选)–
默认值保留为false。--will-retain