Ämnesutrymmen i Azure Event Grids MQTT-koordinatorfunktion
Ett ämnesutrymme representerar flera ämnen via en uppsättning ämnesmallar. Ämnesmallar är ett tillägg av MQTT-filter som stöder variabler, tillsammans med MQTT-jokertecken. Varje ämnesutrymme representerar de MQTT-ämnen som samma uppsättning klienter behöver använda för att kommunicera.
Ämnesutrymmen används för att förenkla åtkomstkontrollhanteringen genom att du kan bevilja publicerings- eller prenumerationsåtkomst till en grupp med ämnen samtidigt i stället för att hantera åtkomst för varje enskilt ämne. Om du vill publicera eller prenumerera på ett MQTT-ämne måste du:
- Skapa en klientresurs för varje klient som behöver kommunicera via MQTT.
- Skapa en klientgrupp som innehåller klienter som behöver åtkomst för att publicera eller prenumerera på samma MQTT-ämne.
- Skapa ett ämnesutrymme som innehåller en ämnesmall som representerar det avsedda ämnes-/ämnesfiltret.
- Skapa en behörighetsbindning för att ge klientgruppen åtkomst att publicera eller prenumerera på ämnesutrymmet.
MQTT Ämnesfilter:
Ett MQTT-ämnesfilter är ett MQTT-ämne som kan innehålla jokertecken för ett eller flera av dess segment, så att det kan matcha flera MQTT-ämnen. Det används för att förenkla prenumerationsbegäranden eftersom ett ämnesfilter kan matcha flera ämnen.
MQTT Broker stöder alla MQTT-jokertecken som definieras av MQTT-specifikationen enligt följande:
- +: som matchar ett enskilt segment.
- Ämnesfilter: "machines/+/alert" matchar till exempel följande ämnen:
- datorer/temp/alert
- maskiner/luftfuktighet/avisering
- Ämnesfilter: "machines/+/alert" matchar till exempel följande ämnen:
- #: som matchar noll eller fler segment i slutet av ämnet.
- Ämnesfilter: "machines/#" matchar till exempel följande ämnen:
- Maskiner
- datorer/temp
- maskiner/luftfuktighet
- datorer/temp/alert osv.
- Ämnesfilter: "machines/#" matchar till exempel följande ämnen:
Mer information om jokertecken finns i Avsnittet jokertecken i MQTT-specifikationen.
Ämnesmallar
Ämnesmallar är ett tillägg av MQTT-filter som stöder variabler, tillsammans med MQTT-jokertecken. Konfiguration av ämnesutrymmen ger också detaljerad åtkomstkontroll genom att du kan styra auktoriseringen av varje klient i en klientgrupp för att publicera eller prenumerera på ett eget ämne. Läs mer om hur ämnesmallar ger detaljerad åtkomstkontroll.
Konfiguration av ämnesutrymme:
Ämnesutrymmen kan gruppera upp till 10 ämnesmallar. Ämnesmallar stöder MQTT-jokertecken (+ och #) och följande variabler:
- ${client.authenticationName}: den här variabeln representerar klientens autentiseringsnamn. Läs mer om klientautentiseringsnamn.
- ${client.attributes.x}: den här variabeln representerar ett tilldelat attribut till en klient när klienten skapas/uppdateras, till exempel "x" skulle vara lika med den exakta strängen för attributnyckeln. Om en klient till exempel har attributet kan en ämnesmall "area/${client.attributes.area}/telemetry" endast göra det möjligt för klienter med klientattributet> "area:section1" att publicera på MQTT-ämnet "area/section1/telemetry". Läs mer om klientattribut.
Obs!
Ämnen som börjar med $ är reserverade för internt bruk.
En variabel kan representera en del av ett segment eller ett helt segment men kan inte täcka fler än ett segment. En ämnesmall kan till exempel innehålla "machines/${client.authenticationName|. factory1}/temp" matchar ämnena "machines/machine1.factory1/temp", "machines/machine2.factory1/temp" osv.
Ämnesmallar använder specialtecken $ och | och dessa måste vara undantagna på olika sätt baserat på gränssnittet som används. I PowerShell kan $ undantagas med fordon/${dollar}telemetri/#. Om du använder PowerShell kan du undvika dessa specialtecken enligt följande exempel:
"vehicles/${client.authenticationName|dollar}/#"
vehicles/${client.authenticationName"|"dollar}/#
Konfiguration av Azure-portalen:
Använd följande steg för att skapa ett ämnesutrymme:
- Gå till ditt namnområde i Azure-portalen.
- Under Ämnesutrymmen väljer du +Ämnesutrymme.
- Tilldela ett namn till ditt ämnesutrymme.
Kommentar
- Namn på ämnesutrymme kan vara 3–50 tecken långt.
- Namn på ämnesutrymme kan innehålla alfanumeriskt, bindestreck(-) och inga blanksteg.
- Lägg till minst en ämnesmall genom att välja +Lägg till ämnesmall.
- Välj Skapa.
Azure CLI-konfiguration:
Använd följande kommandon för att skapa ett ämnesutrymme:
az eventgrid namespace topic-space create -g myRG --namespace-name myNS -n myTopicSpace --topic-templates ['segment1/+/segment3/${client.authenticationName}', "segment1/${client.attributes.attribute1}/segment3/#"]
Kommentar
Det kan ta några minuter att sprida uppdateringar av ämnesutrymmeskonfigurationen.
Nästa steg:
Läs mer om auktorisering och autentisering: