Ämnesområden i MQTT-mäklaren Azure Event Grid

Ett ämnesutrymme representerar flera ämnen genom en uppsättning ämnesmallar. Ämnesmallar utökar MQTT-ämnesfilter med stöd för variabler, utöver de vanliga MQTT-jokerna. Varje ämnesutrymme representerar de MQTT-ämnen som samma uppsättning klienter använder för att kommunicera.

Ämnesutrymmen förenklar åtkomstkontrollen genom att låta dig ge publicera eller prenumerera tillgång till en grupp ämnen samtidigt, istället för att hantera åtkomst för varje enskilt ämne. Åtkomstkontrollmodellen kombinerar fyra resurser för att ge en klientgrupp tillgång till att publicera eller prenumerera på ett ämnesutrymme:

  • Klient: Representerar en enhet eller applikation som kommunicerar över MQTT.
  • Klientgrupp: Grupperar klienter som behöver samma åtkomst till samma uppsättning MQTT-ämnen.
  • Ämnesutrymme: Grupperar en eller flera ämnesmallar som representerar avsedda ämnen eller ämnesfilter.
  • Behörighetsbindning: Ger en klientgrupp publicerings- eller prenumerationsåtkomst till ett ämnesutrymme.

För mer information, se Åtkomstkontroll för MQTT-klienter.

Den här artikeln förklarar hur MQTT-ämnesfilter, ämnesmallar och konfiguration av ämnesutrymme samarbetar, så att du kan gruppera relaterade ämnen och hantera klientåtkomst effektivt.

MQTT-ämnesfilter

Ett MQTT-ämnesfilter är ett MQTT-ämne som kan inkludera jokrar för ett eller flera av sina segment, så att det matchar flera MQTT-ämnen. Ämnesfilter förenklar prenumerationsförfrågningar, eftersom ett ämnesfilter kan matcha flera ämnen.

MQTT-mäklaren stöder alla MQTT-wildcards som definieras av MQTT-specifikationen:

  • + motsvarar ett enda segment. Till exempel matchar ämnesfiltret machines/+/alert dessa ämnen:
    • machines/temp/alert
    • machines/humidity/alert
  • # matchar noll eller fler segment i slutet av ämnet. Till exempel matchar ämnesfiltret machines/# dessa ämnen:
    • machines
    • machines/temp
    • machines/humidity
    • machines/temp/alert

För mer information om jokrar, se Ämnesjokrar i MQTT-specifikationen.

Ämnesmallar

Ämnesmallar utökar MQTT-ämnesfilter med stöd för variabler, utöver MQTT-wildcards. Konfiguration av ämnesutrymme ger också detaljerad åtkomstkontroll genom att låta dig styra auktorisationen av varje klient inom en klientgrupp att publicera eller prenumerera på sitt eget ämne. För mer information, se hur ämnesmallar ger detaljerad åtkomstkontroll.

Temautrymmeskonfiguration

Ett ämnesutrymme kan gruppera upp till 10 ämnesmallar. Ämnesmallar stödjer MQTT-wildcards (+ och #) och följande variabler:

  • ${client.authenticationName}: Representerar autentiseringsnamnet på klienten. För mer information, se nyckeltermer för klientmetadata.
  • ${client.attributes.x}: Representerar ett attribut som tilldelas en klient när klienten skapas eller uppdateras, där x är den exakta strängen för attributnyckeln. Till exempel, om en klient har attributet area:section1, möjliggör ämnesmallen area/${client.attributes.area}/telemetry att endast klienter med det attributet kan publicera på MQTT-ämnet area/section1/telemetry. För mer information, se MQTT-klienter.

Anmärkning

  • Ä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 den kan inte täcka mer än ett segment. Till exempel matchar ämnesmallen machines/${client.authenticationName|.factory1}/temp ämnen som machines/machine1.factory1/temp och machines/machine2.factory1/temp.
  • Ämnesmallar använder specialtecknen $ och |, som du kan behöva fly från beroende på vilken shell du använder. Till exempel, i PowerShell, undvik dessa tecken som visas i följande exempel:
    • "vehicles/${client.authenticationName|dollar}/#"
    • vehicles/${client.authenticationName"|"dollar}/#

För att skapa ett ämnesutrymme i Azure-portalen eller med Azure CLI, se Publicera och prenumerera på MQTT-meddelanden. När du namnger ett ämnesutrymme, använd dessa regler:

  • Ett ämnesutrymmesnamn kan vara 3–50 tecken långt.
  • Ett ämnesrymdnamn kan innehålla alfanumeriska tecken och bindestreck (-), utan mellanslag.

Skärmdump av konfigurationen av ämnesutrymmet i Azure-portalen.

Följande Azure CLI-exempel skapar ett ämnesutrymme som har två ämnesmallar:

az eventgrid namespace topic-space create -g myRG --namespace-name myNS -n myTopicSpace --topic-templates ['segment1/+/segment3/${client.authenticationName}', "segment1/${client.attributes.attribute1}/segment3/#"]

Anmärkning

Uppdateringar av ämnesutrymmets konfiguration kan ta ett par minuter att slå igenom.