Der Leitfaden für Anfänger zu MQTT-gespeicherten Nachrichten

Wenn Sie MQTT auch nur ein wenig kennen, wissen Sie vielleicht bereits, dass es für jede MQTT-Nachricht einen Themennamen und die Nutzlast gibt. Wenn Sie etwas tiefer graben, werden Sie feststellen, dass es auch Nachrichteneigenschaften und Flags gibt. Eine der Flaggen wird aufgerufen Retaindarum geht es in diesem Beitrag.

Beim Empfang einer Nachricht mit der Retain gesetzt ist, muss der MQTT-Broker die Nachricht für das Thema speichern, in dem die Nachricht veröffentlicht wurde, und er darf nur die neueste Nachricht speichern. So können die Abonnenten, die an diesem Thema interessiert sind, offline gehen und sich jederzeit wieder verbinden, um die neueste Nachricht zu erhalten, anstatt nach dem Abonnement auf die nächste Nachricht des Herausgebers warten zu müssen.

Wie unten dargestellt, wenn ein Client ein Thema abonniert und eine gespeicherte Nachricht für dieses Thema vorhanden ist, wird die Nachricht sofort an den Client gesendet.

Aufbewahrte MQTT-Nachrichten

Wann werden MQTT-Retained Messages verwendet?

Das Publish-Subscribe-Muster ermöglicht es Publishern zwar, Abonnenten zu entkoppeln, hat aber auch den Nachteil, dass Abonnenten nicht aktiv Nachrichten von Publishern abrufen können. Wann ein Abonnent eine Nachricht erhält, hängt davon ab, wann der Herausgeber sie veröffentlicht, was in einigen Szenarien unpraktisch ist.

Neue Abonnenten können die neuesten Daten sofort abrufen, ohne auf unvorhersehbare Zeiten mit gespeicherten Nachrichten warten zu müssen. Nachfolgend einige Beispiele:

  • Smart-Home-Geräte senden nur Zustandsdaten, wenn sich der Zustand ändert, aber die Steuerungs-APP muss den aktuellen Zustand des Geräts kennen, wenn der Benutzer die APP öffnet.
  • Das Intervall zwischen den Sensoren, die Daten melden, kann sehr lang sein, aber die Abonnenten müssen möglicherweise die neuesten Daten sofort nach dem Abonnieren erhalten.
  • Eigenschaften wie Sensorversion und Seriennummer, die sich nicht häufig ändern, können als gespeicherte Nachricht veröffentlicht werden, damit spätere Abonnenten die Informationen abrufen können.

Wie verwendet man gespeicherte MQTT-Nachrichten?

Für MQTT-Client-SDKs gibt es normalerweise APIs oder Parameter zum Festlegen der Retain Flagge. Zum Beispiel die paho MQTT-Java-Client-Bibliothekund der Erlang MQTT-Client empf.

Für MQTT-Client-Anwendungen, entweder mit einer Befehlszeile oder einer grafischen Oberfläche, sollten Sie in der Lage sein, herauszufinden, wo Sie die festlegen können Retain Flagge.

In diesem Beitrag werden wir uns nicht mit den Programmier-SDKs befassen. Wir werden versuchen, MQTT-aufbewahrte Nachrichten mithilfe von zu demonstrieren plattformübergreifender Open-Source-MQTT 5.0-Desktop-Client – MQTT X.

Wenn Sie die Anwendung MQTT X zum ersten Mal starten, sehen Sie das Hauptfenster unten. Drücke den New Connection Schaltfläche, um eine MQTT-Verbindung herzustellen.

Erstellen Sie eine MQTT-Verbindung

Wir müssen nur eine Verbindung ausfüllen Name und belassen Sie die anderen Parameter als Standard. Das Host wird standardmäßig auf die öffentlicher MQTT-Broker zur Verfügung gestellt von EMQX-Cloud. Klicken Sie abschließend auf die Connect Schaltfläche in der oberen rechten Ecke, um eine MQTT-Verbindung herzustellen.

Erstellen Sie eine MQTT-Verbindung

Veröffentlichen Sie nach erfolgreicher Verbindung eine Nachricht zum Thema sensor/t1 im Nachrichteneingabefeld.

Veröffentlichen Sie eine MQTT-Nachricht

Als nächstes aktivieren wir das Retain-Flag und veröffentlichen zwei beibehaltene Nachrichten zum Thema sensor/t2.

Veröffentlichen Sie MQTT Retained-Nachrichten

Klicken Sie dann auf die New Subscription Schaltfläche, um ein Abonnement zu erstellen.

Erstellen Sie ein MQTT-Abonnement

Wir abonnieren das Wildcard-Thema sensor/+, die zu den Themen passen sensor/t1 und sensor/t2.

Schauen Sie sich den Blog an Verstehen von MQTT-Themen und Platzhaltern nach Fall für mehr Details.

Abonnieren Sie das MQTT-Wildcard-Thema

Schließlich sehen wir, dass das Abonnement die zweite gespeicherte Nachricht erfolgreich empfängt, weder die normale Nachricht für sensor/t1 noch die erste gespeicherte Nachricht für sensor/t2. Dies zeigt, dass der MQTT-Broker nur die letzte aufbewahrte Nachricht für jedes Thema speichert.

Erhalten Sie gespeicherte MQTT-Nachrichten

Fragen und Antworten zu MQTT Retained Messages

Woher weiß ich, dass es sich bei einer Nachricht um eine gespeicherte Nachricht handelt?

Wenn eine Nachricht von der stammt Retain Speicherung im Broker, der Retain Flag gesetzt ist, damit der Abonnent weiß, dass dies keine neue Nachricht nach seinem Abonnement ist.

Das heißt, wenn eine gespeicherte Nachricht nach dem Abonnement veröffentlicht wird, erhält der Abonnent sie als reguläre Nachricht (ohne die Retain Flagge). Nachdem eine zurückbehaltene Nachricht zugestellt wurde, muss der Abonnent, wenn er die zurückbehaltene Nachricht erneut empfangen möchte, erneut abonnieren.

Im folgenden Beispiel abonnieren wir das Thema sensor/t2 und dann eine zurückbehaltene Nachricht zu dem Thema veröffentlichen, erhält der Abonnent die Nachricht sofort, jedoch ohne das ‘Beibehalten’-Flag. Dann löschen wir das Abonnement und abonnieren es erneut sensor/t2 um die Nachricht mit gesetztem ‘Retain’-Flag erneut zu erhalten.

Aufbewahrte MQTT-Nachrichten

Wie lange werden aufbewahrte Nachrichten gespeichert? Wie lösche ich es?

Der Broker speichert nur die letzte aufbewahrte Nachricht für jedes Thema, und die Gültigkeit der aufbewahrten Nachricht hängt von den Einstellungen des Brokers ab. Wenn der Broker so eingestellt ist, dass er aufbewahrte Nachrichten im Speicher speichert, gehen sie verloren, wenn der MQTT-Broker neu gestartet wird; Wenn sie auf der Festplatte gespeichert sind, bleiben sie nach dem Neustart des Brokers erhalten.

Aufbewahrte Nachrichten sind nicht Teil des Sitzungsstatus, was bedeutet, dass aufbewahrte Nachrichten nicht gelöscht werden, wenn die Veröffentlichungssitzung beendet wird. Es gibt mehrere Möglichkeiten, gespeicherte Nachrichten zu löschen.

  • Wenn ein Client eine aufbewahrte Nachricht mit einer leeren Nutzlast zu einem Thema veröffentlicht, löscht der Broker die aufbewahrte Nachricht unter diesem Thema.
  • Löschen auf dem MQTT-Broker, z. B. bietet der EMQX MQTT-Broker die Möglichkeit, gespeicherte Nachrichten von der Verwaltungs-API oder vom Dashboard zu löschen.
  • Das MQTT 5.0-Protokoll hat die Eigenschaft Message Expiry Interval hinzugefügt, die verwendet werden kann, um die Ablaufzeit der Nachricht bei der Veröffentlichung festzulegen. Die Nachricht wird nach der Ablaufzeit automatisch gelöscht, unabhängig davon, ob es sich um eine aufbewahrte Nachricht handelt.

MQTT-aufbewahrte Nachrichten in EMQX

EMQX ist der beliebteste MQTT-Broker mit über 10 Millionen Downloads weltweit. In letzter Zeit, EMQX hat Version 5.0 veröffentlichtwas erreicht 100 Millionen MQTT-Verbindungen + 1 Million Nachrichtendurchsatz pro Sekunde durch einen 23-Knoten-Cluster, was EMQX 5.0 zum bisher am besten skalierbaren MQTT-Broker weltweit macht.

EMQX 5.0 unterstützt das Anzeigen und Einstellen von aufbewahrten Nachrichten im integrierten Dashboard. Sie können den folgenden Befehl verwenden, um die Open-Source-Version von EMQX 5.0 zu Testzwecken zu installieren.

docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest

Verwenden Sie nach erfolgreicher Installation Ihren Browser, um zu besuchen um das neue EMQX 5.0 Dashboard zu erleben.

Der Standard-Benutzername ist admin und das Passwort ist öffentlich.

Nach erfolgreicher Anmeldung können Sie auf klicken Configuration->MQTT Menü, um die Liste der aufbewahrten Nachrichten anzuzeigen. Sie können auch die Payload der aufbewahrten Nachrichten anzeigen oder eine aufbewahrte Nachricht löschen.

![MQTT Retained Messages in EMQX](https://assets.emqx.com/images/125fb714b5ab0eae6689fe305795d
0e2.png?imageMogr2/thumbnail/1520x)

Klick auf das Settings Menü unter Retainerund Sie werden sehen, dass EMQX das Festlegen des Speichers (Speicher oder Festplatte), der maximalen Anzahl an aufbewahrten Nachrichten, des Ablaufdatums und anderer Parameter im Dashboard unterstützt.

Einstellung für gespeicherte MQTT-Nachrichten

Dieser Artikel stellt die Verwendung von MQTT Retained Messages vor und demonstriert sie. In Bezug auf diesen Artikel können Leser MQTT Retained Messages verwenden, um Daten unmittelbar nach dem Abonnement abzurufen.

Darüber hinaus verfügt das MQTT-Protokoll über viele weitere wertvolle Funktionen. Schauen Sie sich die EMQs an MQTT Erste Schritte und Fortgeschrittene Reihe von Artikeln für ein tieferes Verständnis, um fortgeschrittenere Anwendungen von MQTT zu erkunden und mit der Entwicklung von MQTT-Anwendungen und -Diensten zu beginnen.

Ursprünglich erschienen bei https://www.emqx.com.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *