Dela via


Ä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:

  1. Skapa en klientresurs för varje klient som behöver kommunicera via MQTT.
  2. Skapa en klientgrupp som innehåller klienter som behöver åtkomst för att publicera eller prenumerera på samma MQTT-ämne.
  3. Skapa ett ämnesutrymme som innehåller en ämnesmall som representerar det avsedda ämnes-/ämnesfiltret.
  4. 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
  • #: 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.

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.

Skärmbild av konfiguration av ämnesutrymme.

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:

Snabbstart:

Koncept: