2017-10-03 6 views
0

Ich verwalte einen RabbitMQ-Broker mit MQTT und WebSocket MQTT aktiviert. Beim Testen der Server haben wir unbeabsichtigt den letzten Willen eines Kunden als retain = true markiert. Dies hatte unbeabsichtigte Konsequenzen, z. B. immer die LWT-Nachricht zu erhalten, wenn ein Client eine Verbindung zum LWT-Thema herstellen würde. Dies führte auch zu Downstream-Problemen in der Anwendung.Das Zurückhalten von MQTT zuletzt wird Nachrichten von RabbitMQ?

In der Verwaltungskonsole wurden keine Nachrichten in der Warteschlange angezeigt, obwohl sie bei der Verbindung über MQTT angezeigt würden. Nach einiger Zeit verschwanden die LWT-Nachrichten und die Dinge gingen wieder normal. Ich bin immer noch nicht in der Lage, beibehaltene MQTT-Nachrichten vom Broker zu identifizieren und manuell zu löschen, wenn dies auftritt.

Wie kann ich alle zurückgehaltenen MQTT-Nachrichten (und LWT-Nachrichten) in RabbitMQ anzeigen und löschen?

Antwort

1

Sie sollten in der Lage sein, eine einzelne beibehaltene Nachricht eines Themas zu löschen, indem Sie eine Nachricht mit einer Null-Nutzlast veröffentlichen und das beibehaltene Bit für das gleiche Thema auf "true" setzen.

Wie zum Löschen alle Themen beibehalten ich mit rabbitmq bin nicht sicher, mit mosquitto der einfachste Weg ist, den Broker zu stoppen und die Persistenz db löschen (dies auch tilgt jede Nachrichten in der Warteschlange und persistent Abonnements)

Verwandte Themen