【发布时间】:2016-09-23 15:48:11
【问题描述】:
从文档中我了解到 LWT 可以发送或删除一条消息。但是如果客户端需要多条保留消息,那么在连接丢失的情况下如何清理呢?
【问题讨论】:
标签: mqtt
从文档中我了解到 LWT 可以发送或删除一条消息。但是如果客户端需要多条保留消息,那么在连接丢失的情况下如何清理呢?
【问题讨论】:
标签: mqtt
简短的回答,你不能。
LWT 只会发送 1 条消息(或发送带有空负载的消息以清除保留的消息)。
如果您想更改其他保留消息的状态,唯一真正的选择是让单独的客户端运行订阅 LWT 主题,然后清除多个保留消息。
【讨论】:
正如 hardillb 所提到的,MQTT 标准机制是不可能的。不过,一些代理可能有删除多个保留消息的选项。对于 HiveMQ,有一个 RetainedMessageStore 可用,它允许修改事件中保留的消息(例如,当发送 LWT 时)。甚至还有一个允许递归删除保留消息的插件:Github Link
【讨论】: