我管理一个启用了MQTT和WebSocket MQTT的RabbitMQ代理。在测试服务器时,我们无意中将客户的遗嘱和遗嘱标记为retain = true
。这会产生意想不到的后果,例如当客户端连接到LWT主题时始终收到LWT消息。这也在应用程序中产生了下游问题。
管理控制台中没有显示排队的消息,即使它们在通过MQTT连接时出现。一段时间后,LWT消息被清除,事情恢复正常。发生这种情况时,我仍然无法识别并手动清除代理中保留的MQTT消息。
如何在RabbitMQ中查看和清除所有保留的MQTT消息(和LWT消息)?
答案 0 :(得分:2)
您应该能够通过发布具有空有效负载的消息并将保留位设置为true来清除主题中的单个保留消息。
至于清除所有保留的主题我不熟悉rabbitmq,使用mosquitto最简单的方法是停止代理并删除持久性db(这也会消除任何排队的消息和持久订阅)
答案 1 :(得分:1)
清除方法取决于您决定使用的retained message store。
就我而言,我决定通过noop
商店完全禁用已保留邮件的存储: