Themenräume im MQTT Vermittler-Feature von Azure Event Grid
Ein Themenbereich stellt mehrere Themen über eine Reihe von Themenvorlagen dar. Themenvorlagen sind eine Erweiterung von MQTT-Filtern, die Variablen zusammen mit MQTT-Platzhaltern unterstützen. Jeder Themenbereich stellt die MQTT-Themen dar, die dieselbe Gruppe von Clients für die Kommunikation verwenden muss.
Themenbereiche werden verwendet, um die Zugriffssteuerungsverwaltung zu vereinfachen, indem Sie gleichzeitig Veröffentlichungs- oder Abonnierungszugriff für eine Gruppe von Themen gewähren können, anstatt den Zugriff für jedes einzelne Thema zu verwalten. Zum Veröffentlichen oder Abonnieren eines MQTT-Themas müssen Sie die folgenden Aufgaben ausführen:
- Erstellen einer Clientressource für jeden Client, der über MQTT kommunizieren muss.
- Erstellen einer Clientgruppe, die die Clients enthält, die Zugriff benötigen, um dasselbe MQTT-Thema zu veröffentlichen oder zu abonnieren.
- Erstellen eines Themenbereichs, der eine Themenvorlage enthält, die das gewünschte Thema bzw. den Themenfilter darstellt.
- Erstellen einer Berechtigungsbindung, um der Clientgruppe Zugriff zum Veröffentlichen oder Abonnieren des Themenbereichs zu gewähren.
MQTT-Themenfilter:
Ein MQTT-Themenfilter ist ein MQTT-Thema, das für mindestens ein Segment Platzhalter enthalten kann, sodass mehrere MQTT-Themen abgeglichen werden können. Er wird verwendet, um Abonnementanforderungen zu vereinfachen, da ein Themenfilter mit mehreren Themen abgeglichen werden kann.
MQTT Vermittler unterstützt alle durch die MQTT-Spezifikation definierten MQTT-Platzhalter wie folgt:
- +: Gleicht ein einzelnes Segment ab.
- Der Themenfilter „machines/+/alert“ gleicht beispielsweise die folgenden Themen ab:
- machines/temp/alert
- machines/humidity/alert
- Der Themenfilter „machines/+/alert“ gleicht beispielsweise die folgenden Themen ab:
- #: Entspricht null oder mehr Segmenten am Ende des Themas.
- Der Themenfilter „machines/#“ gleicht beispielsweise die folgenden Themen ab:
- machines
- machines/temp
- machines/humidity
- machines/temp/alert usw.
- Der Themenfilter „machines/#“ gleicht beispielsweise die folgenden Themen ab:
Weitere Informationen zu Platzhaltern finden Sie unter Themenplatzhalter in der MQTT-Spezifikation.
Themenvorlagen
Themenvorlagen sind eine Erweiterung von MQTT-Filtern, die Variablen zusammen mit MQTT-Platzhaltern unterstützen. Die Themenbereichskonfiguration bietet auch präzise Zugriffssteuerung, indem Sie die Autorisierung jedes Clients innerhalb einer Clientgruppe steuern können, um ein eigenes Thema zu veröffentlichen oder zu abonnieren. Erfahren Sie mehr darüber, wie Themenvorlagen präzise Zugriffssteuerung ermöglichen.
Themenbereichskonfiguration:
Themenbereiche können bis zu 10 Themenvorlagen gruppieren. Themenvorlagen unterstützen MQTT-Platzhalter (+ und #) sowie die folgenden Variablen:
- ${client.authenticationName}: Diese Variable stellt den Authentifizierungsnamen des Clients dar. Erfahren Sie mehr über Clientauthentifizierungsnamen.
- ${client.attributes.x}: Diese Variable stellt ein zugewiesenes Attribut für einen Client während der Clienterstellung/-aktualisierung dar, z. B. wäre „x“ gleich der genauen Zeichenfolge des Attributschlüssels. Wenn ein Client z. B. über das Attribut verfügt, ermöglicht eine Themenvorlage „area/${client.attributes.area}/telemetry“ nur Clients mit dem Clientattribut> „area:section1“ die Veröffentlichung im MQTT-Thema „area/section1/telemetry“. Erfahren Sie mehr über Clientattribute.
Hinweis:
Themen, die mit $ beginnen, sind für die interne Verwendung reserviert.
Eine Variable kann einen Teil eines Segments oder ein gesamtes Segment darstellen, aber nicht mehr als ein Segment abdecken. Eine Themenvorlage könnte beispielsweise „machines/${client.authenticationName|. factory1}/temp“ enthalten, was den Themen „machines/machine1.factory1/temp“, „machines/machine2.factory1/temp“ entspricht usw.
Themenvorlagen verwenden die Sonderzeichen $ und |, und diese müssen je nach verwendeter Shell mit unterschiedlichen Escapezeichen versehen werden. In PowerShell kann für $ vehicles/${dollar}telemetry/# als Escapezeichen verwendet werden. Wenn Sie PowerShell verwenden, können Sie diese Sonderzeichen wie in den folgenden Beispielen gezeigt mit Escapezeichen versehen:
"vehicles/${client.authenticationName|dollar}/#"
vehicles/${client.authenticationName"|"dollar}/#
Konfiguration im Azure-Portal:
Führen Sie die folgenden Schritte aus, um einen Themenbereich zu erstellen:
- Navigieren Sie im Azure-Portal zu Ihrem Namespace.
- Wählen Sie unter „Themenbereiche“ die Option „+ Themenbereich“ aus.
- Weisen Sie Ihrem Themenbereich einen Namen zu.
Hinweis
- Ein Themenbereichsname kann 3 bis 50 Zeichen lang sein.
- Der Name des Themenbereichs kann alphanumerische Zeichen und Bindestriche (-), aber keine Leerzeichen enthalten.
- Fügen Sie mindestens eine Themenvorlage hinzu, indem Sie „+ Themenvorlage hinzufügen“ auswählen.
- Klicken Sie auf „Erstellen“.
Konfiguration mit der Azure CLI:
Verwenden Sie die folgenden Befehle, um einen Themenbereich zu erstellen:
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
Die Weitergabe von Aktualisierungen der Themenbereichskonfiguration kann einige Minuten in Anspruch nehmen.
Nächste Schritte:
Weitere Informationen zur Autorisierung und Authentifizierung: