von Ponlakshmi
Wenn ein Verleger eine Nachricht an ein Subjekt veröffentlicht, dem niemand abonniert hat, dann ist die Nachricht einfach von derMQTT Broker. Durch das Setzen des gespeicherten Nachrichten-Flags kann der Verleger den Broker informieren, um die letzte Nachricht darüber zu behalten. Thema. Diese Funktion Sie können eine einzelne Nachricht pro speichernMQT Themaund an alle aktuellen und zukünftigen Abonnenten senden. Um eine gespeicherte Nachricht zu speichern, Setzen Sie einfach eine beibehaltene Flagge, wenn Sie es an den Broker veröffentlichen. Zu diesem Zeitpunkt wird die Nachricht an alle aktuellen Teilnehmer als wie alle zukünftigen Geräte, die dieses Thema abonnieren. In diesem Beitrag werden wir eine Überblick über diese Funktion und es mit einem Beispiel erklären. Sehen wir uns das jetzt an.
Wenn wir den Satz erhalten Nachrichten hören, denken wir sofort an Nachrichten, die gespeichert wurden. DieseMQTEingehaltene Nachrichten werden in derMQ3.1.1 In den Warenkorbund werden von Veröffentlichung einer Nachricht mit der auf „True“ gesetzten beibehaltenen Flagge. Der Broker speichert die zuletzt gespeicherte Nachricht sowie dieMQTT QoSfür dieses Thema. Im Vergleich zu MQTT v3.1.1 bietet es einen Retain Handling-Feld in der Abonnement-Option und macht eine eingehendere Aufteilung, ob ein Reservat senden Nachricht, wenn die Das Abonnement wird inMQTT v5.0. Wie bereits erwähnt, wird eine gespeicherte Nachricht an alle aktuell abonnierten Kunden geliefert. in der gleichen Weise, dass eine normale Nachricht ist, und es wird auch automatisch an neue Kunden gesendet, die abonnieren zu diesem Thema. Nur eins gespeicherte Nachricht kann pro Thema gespeichert werden, alle zukünftigen gespeicherten Nachrichten ersetzen die vorhandenen gespeicherten Nachrichten.
In diesem Beispiel sendet der Sensor dem Broker seinen aktuellen Wert zusammen mit einer wahren gespeicherten Nachricht. Das Nachricht ist sofort erhalten durchMQTT Clientwer online ist. Der Broker speichert die Nachricht und liefert sie dem zweiten Client, sobald es kommt online, da die behaltene Flagge auf true gesetzt ist. Als Ergebnis dieser Funktion, wenn der Offline-Client kommt online, es wird aktualisiert mit dem neuesten Sensorwert.
Nachdem ein Client ein Thema abonniert hat, werden MQTT-Nachrichten an den Client gesendet. Sie können eine Konfigurationsnachricht mit der RETAIN-Flag-Set, wenn Sie möchten, dass alle Clients, die ein Thema abonnieren, die MQTT-behaltene Nachricht erhalten sofort nach ihrem Abonnement. Wenn eine neue Konfigurationsnachricht veröffentlicht wird, erhält die Anmeldung von Clients Aktualisierungen davon auch Konfiguration.
Geräte können Nachrichten speichern, indem das RETAIN-Flag auf aktuellen Nachrichten gesetzt wird. Bei Anwendungen verbinden oder wieder verbinden, sie können dieses Thema abonnieren und den neuesten gemeldeten Zustand sofort nach der Durchführung erhalten. Sie können nicht warten für die nächste Meldung des Geräts, um den aktuellen Zustand auf diese Weise zu sehen.
Wir gehen über, wie Sie die MQTT gespeicherte Nachrichten in den folgenden Abschnitten festlegen und löschen können.
Eine Haltenachricht ist eine Standard-MQTT-Veröffentlichungsnachricht mit dem gespeicherten Flag aktiviert. Wenn ein Verleger sendet Daten an den Broker, es sendet zusätzlich zu dem Thema und der Nachricht noch weitere Informationen, wie Sie wahrscheinlich wissen. DieENTWICKLUNGist den Namen dieses Pakets. Sie haben ein Feld auf dem festen Header in diesem Paket zur Einstellung der Halterung Flagge auf 1 oder 0. Es wird standardmäßig auf 0 gesetzt, was darauf hindeutet, dass die Nachricht nicht gespeichert wird. Aber wenn wir es auf 1 setzen, dieMQTT Brokerdie Nachricht speichern und die entsprechendeQualität der Servicestufefür dieses Thema, wenn es das Paket empfängt.
Können Sie herausfinden, wie Sie die Haltefunktion für ein bestimmtes Thema deaktivieren? Es ist nicht so einfach wie das Senden eine Nachricht mit dem Speicher Flag auf 0 gesetzt, da das die Standardbedingung ist. Senden einer leeren Nachricht an das gleiche Thema mit dem Speicher Flagge gesetzt auf 1 ist die korrekte Weise, es zu tun. Ja, dies kann intuitiv erscheinen, aber es wurde auf Zweck getan, um zu vermeiden Konflikte mit jeder Echtzeit Veröffentlichung auf dem gleichen Thema, das nicht die behalten Flagge auf 1 gesetzt hat.
Das MQTT-behaltene Nachrichten-Feature ist nützlich, um den neuesten Zustand eines Objekts zu bewahren, der besonders nützlich, wenn Zustand ändert sich nicht häufig. Die Qualität der Service-Einstellungen hat keinen Einfluss auf die Nachrichten, die bleiben.
Mehr über das Protokoll erfahren,