最后清除保留的 MQTT 将来自 RabbitMQ 的消息?

Purging retained MQTT last will messages from RabbitMQ?

我管理一个启用了 MQTT 和 WebSocket MQTT 的 RabbitMQ 代理。在测试服务器时,我们无意中将客户的遗嘱标记为 retain = true。这会产生意想不到的后果,例如当客户端连接到 LWT 主题时总是收到 LWT 消息。这也造成了应用程序中的下游问题。

管理控制台中没有显示排队的消息,即使它们在通过 MQTT 连接时会出现。一段时间后,LWT 消息被清除,一切恢复正常。发生这种情况时,我仍然无法识别并手动清除代理中保留的 MQTT 消息。

如何查看和清除 RabbitMQ 中所有保留的 MQTT 消息(和 LWT 消息)?

您应该能够通过向同一主题发布有效负载为空且保留位设置为 true 的消息,从主题中清除单个保留消息。

至于清除所有保留的主题,我不确定是否使用 rabbitmq,使用 mosquitto 最简单的方法是停止代理并删除持久性数据库(这也会清除任何排队的消息和持久性订阅)

清除方法取决于您决定使用的retained message store

就我而言,我决定通过 noop 存储完全禁用保留消息的存储: