清除保留的MQTT最后会发送来自RabbitMQ的消息吗?

时间:2017-10-03 12:43:26

标签: rabbitmq mqtt rabbitmq-exchange

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

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

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

2 个答案:

答案 0 :(得分:2)

您应该能够通过发布具有空有效负载的消息并将保留位设置为true来清除主题中的单个保留消息。

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

答案 1 :(得分:1)

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

就我而言,我决定通过noop商店完全禁用已保留邮件的存储:

Disable retained MQTT messages in Rabbit MQ