我显然对整个MQTT协议的工作方式有所遗漏,因为我无法理解遗嘱消息(Last Will Testament)的使用模式:它们的目的是什么?
我经常看到的一个例子是通知设备已离线。这对我来说并没有太多意义,因为很明显,如果设备不发布任何数据,它可能处于离线状态或存在一些网络问题。
那么,LWT的一些实际用途是什么?它是为什么而发明的呢?
仅因设备未发布信息并不意味着它不在线或存在网络问题。
举例来说,有一个传感器监测的数值很少发生变化,良好的设计应当只在数值发生变化时进行发布以节省带宽使用,定期发布相同数值是浪费的。如果将该数值发布为保留值,则任何新订阅者都可以获得当前值,而不必等待传感器数值再次变化并重新发布。
在这种情况下,LWT用于在传感器出现故障(或存在网络问题)时发布,这样我们就可以知道问题所在,并在客户端保持活动状态超时后立即采取措施。