当前位置 : 主页 > 大数据 > 区块链 >

协议 – MQTT最后的遗嘱的目的或用法是什么?

来源:互联网 收集:自由互联 发布时间:2021-06-22
我肯定缺少关于整个MQTT协议的工作原理,因为我无法掌握Last Will Testament消息的使用模式:他们的目的是什么? 我经常看到的一个例子是通知设备已经脱机。这对我来说没有什么意义,
我肯定缺少关于整个MQTT协议的工作原理,因为我无法掌握Last Will Testament消息的使用模式:他们的目的是什么?
我经常看到的一个例子是通知设备已经脱机。这对我来说没有什么意义,因为很明显,如果设备没有发布任何数据,那么它可能是脱机的,或者可能会出现一些网络问题。

那么LWT有什么实际用途呢?它发明了什么?

LWT消息并不真正关心检测客户端是否已经脱机(该任务由keepAlive消息处理)。
LWT消息是关于客户端离线后发生的消息。

类比是真正的最后意志:
如果一个人死亡,她可以制定一个遗嘱,在此,她宣布她去世后应该采取什么行动。执行人会听从这些意愿,代表他们执行。
MQTT世界中的类比是,客户端可以制定一个遗嘱,它在其中声明在代理离开之后,代理人应该发送什么消息。

一个虚构的例子:

我有一个传感器,发送关键数据,但很少发生。
它已经以[topic:’/ node / gone-offline’,message:’:id’]的形式制定了一个last will语句,其中:id是传感器的唯一ID。我还有一个“节点/离线”主题的紧急用户,每当在该频道上发布消息时,它将向我的手机发送短信。

在正常操作期间,传感器将通过发送与实际传感器读数分布的周期性保持活动消息来保持与MQTT代理打开的连接。如果传感器脱机,由于缺少keepAlives,与代理的连接将超时。

这是LWT所在的地方:如果没有指定LWT,代理不在乎,只关闭连接。然而,在我们的例子中,代理将执行传感器的最后一个意愿,并发布LWT消息’/ node / gone-offline::id’。然后,消息将被消费给我的紧急用户,我将通过短信通知传感器的ID,以便我可以检查发生了什么。

简而言之:

客户端脱机之后,只需关闭连接即可,LWT消息可以代表客户端定义要由代理发布的消息,因为客户端脱机并且不能再发布。

网友评论