von Ponlakshmi
MQTNachrichten werden nicht direkt von einem gesendet eine Sache zu einer anderen. Vielmehr werden sie "MQTT-Themen" zugeordnet. DieMQTT Brokerdann verteilt die Nachrichten an alle Kunden, die sie abonniert haben. Der Begriff Thema in Protokoll bezeichnet aUTF-8 Stringvon dem Broker verwendet, um Nachrichten für jeden abonnierten Client zu filtern. Wenn jemand abonniert Thema und veröffentlicht dann eine Nachricht zu diesem Thema mit der gespeicherten Nachricht an True, die Themen sind festgestellt. Wann der letzte Teilnehmer an diesem Broker trennt, eine saubere Sitzung wird festgelegt.Sauberkeit Sitzungwird auf Wahr gesetzt, wenn a MQTT-Client verbindet.
Sensoren/Wasser_Level/Wasser_status– Sensoren, water_level & water_status sind Thema Levels.
Forward slash ( / )– ein Thema Ebene Separator.
Das Thema besteht aus einem oder mehreren Themenebenen. Ein vorderer Slash trennt jedes Thema Level (topische Ebene) Separator). Der Broker erfordert nicht, dass das Thema vorregistriert wird.
MQTT-Themen sind im Vergleich zu einer Nachrichtenwarte sehr leicht. Vor der Veröffentlichung oder Anmeldung einer Thema, der Client muss keine Themen erstellen. Ohne vorherige Initialisierung akzeptiert der Broker alle gültigen Thema.
Hier ein paar Beispiele, um zu sehen:
Ein Blick auf MQTT Topics inBevywise Broker.
Außer der Länge eines UTF-8 codierten Strings gibt es keine Einschränkung auf die Anzahl der Levels in einem Thema Name oder Thema Filter. Themennamen und Themenfilter unterliegen den folgenden Richtlinien:
Das Thema Filter eines Abonnementskann spezielle Wildcard-Zeichen enthalten, mit denen Sie mehrere Themen gleichzeitig abonnieren können. Die wildcard Zeichen können verwendet in Themenfiltern, aber nicht in Themennamen. Wildcards werden in zwei Arten klassifiziert:
Wenn einer der beiden Wildcard-Zeichen in Themenfiltern begegnet wird, die durch die Anmeldung von Clients gegeben werden, Einsatz des Themas Ein Separator ist signifikant. Separatoren für Themenebenen können überall in einem Thema Filter oder einem Thema existieren Name. Ein Thema Null Länge Ein Pegel wird durch benachbarte Themenebenenabscheider angezeigt.
Ein einstufiger Wildcard-Zeichen in einem Thema wird durch das Plus-Symbol „+“ dargestellt. Das Thema Filter Einstufige Wildcard kann verwendet auf jeder Ebene, einschließlich der ersten und letzten. Es muss die gesamte Ebene des Filters füllen, wo immer es wird verwendet. Es kann sein verwendet im Thema Filter auf mehreren Ebenen und in Verbindung mit der Multilevel-Wildcard.
Zum Beispiel
Jedes Thema wie „tank/water_level/+“ passt „tank/water_level/flow_rate1“ und „Tank/water_level/flow_rate2,“ aber nicht „Tank/water_level/flow_rate1/increase“. Auch, weil die Single-Level-Wildcard nur eine Ebene entspricht, „Tank/+“ nicht Match “Tank”, aber “Tank/” tut.
Das Wildcard-Zeichen “#” ist eine Multilevel-Wildcard, die verwendet werden kann, um jede Anzahl von Levels innerhalb ein Thema. Die Eltern und jede Anzahl von Kindern werden durch die Multi-Level-Wildcard repräsentiert. Der Multilevel Wildcard Charakter muss entweder allein oder nach einem Thema Level Separator gegeben werden. Es muss das letzte Zeichen, das in der Thema Filter entweder Szenario.
Zum Beispiel
Wenn ein Client zum Beispiel „tank/water_level/flow_rate1/#“ abonniert, wird er Nachrichten veröffentlicht unter Folgende Themenbezeichnungen:
Themen mit einem Dollar beginnen Zeichen ($)sind reservierte Themen. Die $-Symbol-Themen sind für die internen Statistiken des Brokers. Topic Filters that beginnen mit einer Wildcard Zeichen (# oder +) darf nicht mit Themennamen übereinstimmen, die mit einem $-Zeichen beginnen. Kunden sollten nicht senden können Nachrichten an andere Clients mit solchen Topic Names, nach dem Server. Thema Namen, die mit einem führendes $ Zeichen kann für zusätzliche Zwecke durch Server-Implementierungen verwendet werden. $SYS/ ist zu einem prominenten Präfix für Themen geworden Serverspezifisch Daten oder Kontroll-APIs. Ein Thema mit einem führenden $-Zeichen kann nicht von Anwendungen für ihre eigene Gründe.
Alle folgenden Informationen werden in der Regel in $SYS/ gespeichert, aber Broker-Implementierungen unterscheiden sich. Einige Beispiele sind unten aufgeführt.
Oben sind die Grundlagen von Nachrichtenthemen. MQTT-Themen, wie Sie sehen können, sind dynamisch und bieten viele Flexibilität. Verwenden Sie ihre Erweiterbarkeit, ohne die gesamte Themenhierarchie für die spätere Einbeziehung von neue Sensoren diese zu Ihrem Thema Baum hinzufügen.
Mehr über das Protokoll erfahren,