Themenräume im Azure Event Grid MQTT Broker

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 Themenfilter machines/+/alert diesen Themen zu:
    • machines/temp/alert
    • machines/humidity/alert
  • # entspricht null oder mehr Segmenten am Ende des Themas. Zum Beispiel passt der Themenfilter machines/# diesen Themen zu:
    • machines
    • machines/temp
    • machines/humidity
    • machines/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, wobei x die exakte Zeichenkette des Attributschlüssels ist. Wenn beispielsweise ein Client das Attribut area:section1besitzt, ermöglicht die Topic-Vorlage area/${client.attributes.area}/telemetry nur Clients mit diesem Attribut, auf dem MQTT-Thema area/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}/temp zu Themen wie machines/machine1.factory1/temp und machines/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.

Screenshot der Themenraum-Konfiguration im Azure-Portal.

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.