Förstå händelsedomäner för att hantera Event Grid-ämnen

En händelsedomän är ett hanteringsverktyg för ett stort antal Event Grid-ämnen relaterade till samma program. Du kan se det som ett metaämne som kan ha tusentals enskilda ämnen. Den tillhandahåller en publiceringsslutpunkt för alla ämnen i domänen. När du publicerar en händelse måste utgivaren ange målämnet i den domän som den vill publicera till. Utgivaren kan skicka en matris eller en batch med händelser där händelser skickas till olika ämnen i domänen. Mer information finns i avsnittet Publicera händelser till en händelsedomän .

Domäner ger dig också autentiserings- och auktoriseringskontroll över varje ämne så att du kan partitionera dina klienter. Den här artikeln beskriver hur du använder händelsedomäner för att hantera flödet av anpassade händelser till dina olika företagsorganisationer, kunder eller program. Använd händelsedomäner för att:

  • Hantera arkitekturer för multitenanthändelser i stor skala.
  • Hantera din autentisering och auktorisering.
  • Partitionera dina ämnen utan att hantera var och en individuellt.
  • Undvik att publicera individuellt till var och en av dina ämnesslutpunkter.

Kommentar

Händelsedomänen är inte avsedd att stödja sändningsscenario där en händelse skickas till en domän och varje ämne i domänen tar emot en kopia av händelsen. När du publicerar händelser måste utgivaren ange målämnet i den domän som den vill publicera till. Om utgivaren vill publicera samma händelsenyttolast till flera ämnen i domänen måste utgivaren duplicera händelsenyttolasten och ändra ämnesnamnet och publicera dem till Event Grid med hjälp av domänslutpunkten, antingen individuellt eller som en batch.

Exempel på användningsfall

Händelsedomäner förklaras enklast med hjälp av ett exempel. Låt oss säga att du kör Contoso Construction Machinery, där du tillverkar traktorer, grävutrustning och andra tunga maskiner. Som en del av driften av verksamheten skickar du realtidsinformation till kunder om underhåll av utrustning, systemhälsa och kontraktsuppdateringar. All den här informationen går till olika slutpunkter, inklusive din app, kundslutpunkter och annan infrastruktur som kunderna har konfigurerat.

Med händelsedomäner kan du modellera Contoso Construction Machinery som en enda händelseentitet. Var och en av dina kunder representeras som ett ämne inom domänen. Autentisering och auktorisering hanteras med hjälp av Microsoft Entra-ID. Var och en av dina kunder kan prenumerera på sitt ämne och få sina händelser levererade till dem. Hanterad åtkomst via händelsedomänen säkerställer att de bara kan komma åt sitt ämne.

Det ger dig också en enda slutpunkt som du kan publicera alla dina kundhändelser till. Event Grid tar hand om att se till att varje ämne bara är medvetet om händelser som är begränsade till klientorganisationen.

Image showing an example use case for using Event Grid domains.

Åtkomsthantering

Med en domän får du detaljerad auktorisering och autentiseringskontroll över varje ämne via rollbaserad åtkomstkontroll i Azure (Azure RBAC). Du kan använda dessa roller för att begränsa varje klientorganisation i ditt program till endast de ämnen som du vill ge dem åtkomst till. Azure RBAC i händelsedomäner fungerar på samma sätt som hanterad åtkomstkontroll fungerar i resten av Event Grid och Azure. Använd Azure RBAC för att skapa och framtvinga anpassade rolldefinitioner i händelsedomäner.

Inbyggda roller

Event Grid har två inbyggda rolldefinitioner för att göra Azure RBAC enklare att arbeta med händelsedomäner. Dessa roller är EventGrid EventSubscription-deltagare och EventGrid EventSubscription Reader. Du tilldelar dessa roller till användare som behöver prenumerera på ämnen i din händelsedomän. Du kan begränsa rolltilldelningen till det ämne som användarna behöver prenumerera på. Information om dessa roller finns i Inbyggda roller för Event Grid.

Prenumerera på ämnen

Att prenumerera på händelser för ett ämne inom en händelsedomän är detsamma som att skapa en händelseprenumeration på ett anpassat ämne eller prenumerera på en händelse från en Azure-tjänst.

Viktigt!

Domänämnet anses vara en automatiskt hanterad resurs i Event Grid. Du kan skapa en händelseprenumeration i domänomfånget utan att skapa domänavsnittet. I det här fallet skapar Event Grid automatiskt domänämnet åt dig. Du kan naturligtvis fortfarande välja att skapa domänavsnittet manuellt. Med det här beteendet kan du oroa dig för en resurs mindre när du hanterar ett stort antal domänämnen. När den senaste prenumerationen på ett domänämne tas bort tas även domänämnet bort oavsett om domänavsnittet skapades manuellt eller skapades automatiskt.

Domänomfattningsprenumerationer

Händelsedomäner tillåter även prenumerationer med domänomfattning. En händelseprenumeration på en händelsedomän tar emot alla händelser som skickas till domänen oavsett vilket ämne händelserna skickas till. Domänomfattningsprenumerationer kan vara användbara i hanterings- och granskningssyfte.

Publicera till en händelsedomän

När du skapar en händelsedomän får du en publiceringsslutpunkt som liknar om du hade skapat ett ämne i Event Grid. Om du vill publicera händelser till ett ämne i en händelsedomän skickar du händelserna till domänens slutpunkt på samma sätt som för ett anpassat ämne. Den enda skillnaden är att du måste ange det ämne som du vill att händelsen ska levereras till. Om du till exempel publicerar följande matris med händelser skickas händelsen med "id": "1111" till ämnet foo medan händelsen med "id": "2222" skickas till ämnet bar.

När du använder molnhändelseschemat anger du namnet på Event Grid-ämnet i domänen som ett värde för source egenskapen. I följande exempel source anges egenskapen till foo för den första händelsen och till bar för den andra händelsen.

Om du vill använda ett annat fält för att ange det avsedda ämnet i domänen anger du indataschemamappning när du skapar domänen. Om du till exempel använder REST-API:et använder du egenskapen properties.inputSchemaMapping när fältet ska mappas till properties.topic. Om du använder .NET SDK använder du EventGridJsonInputSchemaMapping. Andra SDK:er stöder också schemamappningen.

[{
  "source": "foo",
  "id": "1111",
  "type": "maintenanceRequested",
  "subject": "myapp/vehicles/diggers",
  "time": "2018-10-30T21:03:07+00:00",
  "data": {
    "make": "Contoso",
    "model": "Small Digger"
  },
	"specversion": "1.0"
},
{
  "source": "bar",
  "id": "2222",
  "type": "maintenanceCompleted",
  "subject": "myapp/vehicles/tractors",
  "time": "2018-10-30T21:04:12+00:00",
  "data": {
    "make": "Contoso",
    "model": "Big Tractor"
  },
	"specversion": "1.0"
}]

Händelsedomäner hanterar publicering till ämnen åt dig. I stället för att publicera händelser till varje ämne som du hanterar individuellt kan du publicera alla dina händelser till domänens slutpunkt. Event Grid ser till att varje händelse skickas till rätt ämne.

Prissättning

Händelsedomäner använder samma driftpriser som alla andra funktioner i Event Grid använder. Åtgärder fungerar på samma sätt i händelsedomäner som i anpassade ämnen. Varje ingress för en händelse till en händelsedomän är en åtgärd och varje leveransförsök för en händelse är en åtgärd.

Nästa steg

Mer information om hur du konfigurerar händelsedomäner, skapar ämnen, skapar händelseprenumerationer och publicerar händelser finns i Hantera händelsedomäner.