如何使用 LWT 删除多条保留消息?
How to delete multiple retained messages with LWT?
从文档中我了解到 LWT 可以发送或删除一条消息。但是如果客户端需要有多个保留的消息,那么在连接丢失的时候如何清理呢?
简答,你不能。
LWT 只会发送 1 条消息(或发送一条带有空负载的消息以清除保留的消息)。
如果您想更改其他保留消息的状态,唯一可行的选择是让一个单独的客户端 运行 订阅 LWT 主题,然后清除多个保留消息。
正如 hardillb 所提到的,使用 MQTT 标准机制是不可能的。不过,一些代理可能有删除多条保留消息的选项。对于 HiveMQ,有一个 RetainedMessageStore available that allows to modify the retained messages on events (e.g. when a LWT is sent). There's even a plugin that allows to delete retained messages recursively: Github Link
从文档中我了解到 LWT 可以发送或删除一条消息。但是如果客户端需要有多个保留的消息,那么在连接丢失的时候如何清理呢?
简答,你不能。
LWT 只会发送 1 条消息(或发送一条带有空负载的消息以清除保留的消息)。
如果您想更改其他保留消息的状态,唯一可行的选择是让一个单独的客户端 运行 订阅 LWT 主题,然后清除多个保留消息。
正如 hardillb 所提到的,使用 MQTT 标准机制是不可能的。不过,一些代理可能有删除多条保留消息的选项。对于 HiveMQ,有一个 RetainedMessageStore available that allows to modify the retained messages on events (e.g. when a LWT is sent). There's even a plugin that allows to delete retained messages recursively: Github Link