Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Themenraum repräsentiert mehrere Themen durch eine Reihe von Themenvorlagen. Themenvorlagen erweitern MQTT-Themenfilter um Unterstützung für Variablen zusätzlich zu den standardmäßigen MQTT-Wildcards. Jeder Themenraum repräsentiert die MQTT-Themen, die dieselbe Gruppe von Clients zur Kommunikation verwendet.
Topic-Bereiche vereinfachen die Zugriffskontrolle, da Sie Veröffentlichungs- oder Abonnementzugriff auf eine Gruppe von Topics gleichzeitig gewähren können, anstatt den Zugriff für jedes einzelne Topic zu verwalten. Das Zugriffskontrollmodell kombiniert vier Ressourcen, um einer Client-Gruppe Zugang zum Veröffentlichen oder Abonnement eines Themenbereichs zu gewähren:
- Client: Repräsentiert ein Gerät oder eine Anwendung, die über MQTT kommuniziert.
- Client-Gruppe: Gruppiert die Clients, die denselben Zugriff auf denselben Satz von MQTT-Themen benötigen.
- Themenraum: Gruppiert eine oder mehrere Themenvorlagen, die die beabsichtigten Themen oder Themenfilter repräsentieren.
- Erlaubnisbindung: Gewährt einer Kundengruppe Veröffentlichungs- oder Abonnementzugriff auf einen Themenraum.
Weitere Informationen finden Sie unter Access Control for MQTT-Clients.
Dieser Artikel erklärt, wie MQTT-Themenfilter, Themenvorlagen und Topicspace-Konfiguration zusammenarbeiten, sodass Sie verwandte Themen gruppieren und den Client-Zugriff effizient verwalten können.
MQTT-Themenfilter
Ein MQTT-Themenfilter ist ein MQTT-Thema, das in einem oder mehreren seiner Segmente Platzhalter enthalten kann, sodass es mit mehreren MQTT-Themen übereinstimmt. Themenfilter vereinfachen Abonnementanfragen, da ein Themenfilter mehrere Themen zuordnen kann.
Der MQTT-Broker unterstützt alle MQTT-Wildcards, die durch die MQTT-Spezifikation definiert sind:
-
+passt zu einem einzelnen Segment. Zum Beispiel passt der Themenfiltermachines/+/alertdiesen Themen zu:machines/temp/alertmachines/humidity/alert
-
#entspricht null oder mehr Segmenten am Ende des Themas. Zum Beispiel passt der Themenfiltermachines/#diesen Themen zu:machinesmachines/tempmachines/humiditymachines/temp/alert
Für weitere Informationen zu Wildcards siehe Topic Wildcards in der MQTT-Spezifikation.
Themenvorlagen
Themenvorlagen erweitern MQTT-Themenfilter um Unterstützung für Variablen, zusätzlich zu den MQTT-Wildcards. Die Konfiguration des Themenraums bietet außerdem eine granulare Zugriffskontrolle, indem sie es ermöglicht, die Autorisierung jedes Clients innerhalb einer Client-Gruppe zu steuern, um ein eigenes Thema zu veröffentlichen oder zu abonnieren. Weitere Informationen finden Sie darin, wie Themenvorlagen granulare Zugriffskontrolle bieten.
Themenraum-Konfiguration
Ein Themenraum kann bis zu 10 Themenvorlagen gruppieren. Themenvorlagen unterstützen die MQTT-Wildcards (+ und #) und folgende Variablen:
-
${client.authenticationName}: Stellt den Authentifizierungsnamen des Clients dar. Weitere Informationen finden Sie unter Schlüsselbegriffen der Client-Metadaten. -
${client.attributes.x}: Repräsentiert ein Attribut, das einem Client beim Erstellen oder Aktualisieren zugewiesen wird, wobeixdie exakte Zeichenkette des Attributschlüssels ist. Wenn beispielsweise ein Client das Attributarea:section1besitzt, ermöglicht die Topic-Vorlagearea/${client.attributes.area}/telemetrynur Clients mit diesem Attribut, auf dem MQTT-Themaarea/section1/telemetryzu veröffentlichen. Weitere Informationen finden Sie unter MQTT-clients.
Hinweis
- Themen, die mit
$beginnen, sind für den internen Gebrauch reserviert. - Eine Variable kann einen Teil eines Segments oder ein ganzes Segment repräsentieren, aber sie kann nicht mehr als ein Segment abdecken. Zum Beispiel passt die Themenvorlage
machines/${client.authenticationName|.factory1}/tempzu Themen wiemachines/machine1.factory1/tempundmachines/machine2.factory1/temp. - Topic-Vorlagen verwenden die Sonderzeichen
$und|, die du je nach verwendeter Shell eventuell vermeiden musst. Zum Beispiel maskieren Sie diese Zeichen in PowerShell, wie in den folgenden Beispielen gezeigt:"vehicles/${client.authenticationName|dollar}/#"vehicles/${client.authenticationName"|"dollar}/#
Informationen zum Erstellen eines Themenraums im Azure-Portal oder mit der Azure CLI finden Sie unter Veröffentlichen und Abonnieren von MQTT-Nachrichten. Wenn Sie einen Themenraum benennen, verwenden Sie diese Regeln:
- Ein Themenraumname kann 3 bis 50 Zeichen lang sein.
- Ein Themenraumname kann alphanumerische Zeichen und Bindestriche (
-) enthalten, ohne Leerzeichen.
Das folgende Azure CLI-Beispiel erstellt einen Themenraum, der zwei Themenvorlagen enthält:
az eventgrid namespace topic-space create -g myRG --namespace-name myNS -n myTopicSpace --topic-templates ['segment1/+/segment3/${client.authenticationName}', "segment1/${client.attributes.attribute1}/segment3/#"]
Hinweis
Aktualisierungen der Themenraum-Konfiguration könnten ein paar Minuten dauern, bis sie verbreitet werden.