In MQTT bezieht sich das Wort Topic auf eine UTF-8-Zeichenkette, die der Broker verwendet, um Nachrichten für jeden verbundenen Client zu filtern. Das Topic besteht aus einer oder mehreren Topic-Ebenen. Jede Topic-Ebene wird durch einen Schrägstrich getrennt (Topic-Ebenen-Trennzeichen)
myHome / groundfloor / livingroom / temperature
Im Vergleich zu einer Nachrichtenwarteschlange sind MQTT-Themen sehr leichtgewichtig. Der Client muss das gewünschte Thema nicht erstellen, bevor er es veröffentlicht oder abonniert. Der Broker akzeptiert jedes gültige Thema ohne vorherige Initialisierung. Beachten Sie, dass jedes Thema mindestens 1 Zeichen enthalten muss und dass die Themen-Zeichenkette Leerzeichen zulässt. Themen unterscheiden Groß- und Kleinschreibung.
Wenn ein Client ein Topic abonniert, kann er das exakte Topic einer veröffentlichten Nachricht abonnieren, oder er kann Platzhalter verwenden, um mehrere Topics gleichzeitig zu abonnieren. Ein Platzhalter kann nur zum Abonnieren von Topics verwendet werden, nicht zum Veröffentlichen einer Nachricht. Es gibt zwei verschiedene Arten von Platzhaltern: _single-level und _multi-level.
Wie der Name schon sagt, ersetzt ein Single-Level-Platzhalter eine Topic-Ebene. Das Plus-Symbol repräsentiert einen Single-Level-Platzhalter in einem Topic.
myHome / groundfloor / + / temperature
Jedes Topic stimmt mit einem Topic mit Single-Level-Wildcard überein, wenn es eine beliebige Zeichenfolge anstelle der Wildcard enthält. Zum Beispiel kann ein Abonnement von _myhome/groundfloor/+/temperature die folgenden Ergebnisse erzeugen:
YES => myHome / groundfloor / livingroom / temperature
YES => myHome / groundfloor / kitchen / temperature
NO => myHome / groundfloor / livingroom / brightness
NO => myHome / firstfloor / livingroom / temperature
NEIN => myHome / groundfloor / kitchen / fridge / temperature
Der mehrstufige Platzhalter deckt viele Themenebenen ab. Das Rautensymbol stellt den mehrstufigen Platzhalter im Thema dar. Damit der Broker bestimmen kann, welche Themen übereinstimmen, muss der mehrstufige Platzhalter als letztes Zeichen im Thema platziert und von einem Schrägstrich vorangestellt werden.
myHome / groundfloor / #
YES => myHome / groundfloor / livingroom / temperature
YES => myHome / groundfloor / kitchen / temperature
YES => myHome / groundfloor / kitchen / brightness
NEIN => myHome / firstfloor / kitchen / temperature
Wenn ein Client ein Thema mit einem mehrstufigen Platzhalter abonniert, empfängt er alle Nachrichten eines Themas, das mit dem Muster vor dem Platzhalterzeichen beginnt, unabhängig davon, wie lang oder tief das Thema ist. Wenn Sie nur den mehrstufigen Platzhalter als Thema angeben (_#), empfangen Sie alle Nachrichten, die an den MQTT-Broker gesendet werden.