Event Grid en eventgedreven architectuur
Routeer gebeurtenissen van Azure-services en aangepaste publishers met Event Grid, verspreid ze naar meerdere subscribers en vergelijk Event Grid met Event Hubs en Service Bus.
Event Grid en eventgedreven architectuur is een gratis Cloud & IT Cert Prep-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Cloud & IT Cert Prep. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Cloud & IT Cert Prep bevat in totaal 4 lessen.
Wat is gebeurtenisgestuurde architectuur
In een gebeurtenisgestuurde architectuur communiceren componenten door gebeurtenissen te publiceren en zich erop te abonneren, in plaats van elkaar rechtstreeks aan te roepen. Een component (producent) genereert een gebeurtenis wanneer er iets belangrijks gebeurt — er wordt een bestand geüpload, er wordt een bestelling geplaatst of een apparaat verstuurt een meting. Andere componenten (abonnees) reageren zelfstandig en asynchroon op de gebeurtenissen die voor hen relevant zijn. Hierdoor zijn producenten en verbruikers van elkaar ontkoppeld, wat de schaalbaarheid, veerkracht en onderhoudbaarheid verbetert.
Wat is Azure Event Grid
Azure Event Grid is een volledig beheerde service voor het routeren van gebeurtenissen. De service bezorgt gebeurtenissen van bronnen (publiceerders) aan verwerkers (abonnees) met behulp van een pushmodel. Event Grid is ontworpen voor reactieve, afzonderlijke gebeurtenissen — er is iets gewijzigd en u moet onmiddellijk reageren. De service garandeert levering ten minste eenmaal, voert automatisch nieuwe pogingen uit, ondersteunt filters zodat abonnees alleen relevante gebeurtenissen ontvangen en kan gebeurtenissen routeren naar Azure Functions, Logic Apps, webhooks, Event Hubs en Service Bus-wachtrijen.
Event Grid-onderwerpen en gebeurtenisabonnementen
Publiceerders sturen gebeurtenissen naar een Event Grid-onderwerp. Abonnees maken gebeurtenisabonnementen op een onderwerp en geven daarbij een eindpunt en optionele filterregels op. Eén onderwerp kan meerdere abonnementen hebben — elk abonnement ontvangt een onafhankelijke kopie van overeenkomende gebeurtenissen. Azure-services zoals Blob Storage, Resource Manager, Service Bus en Azure Container Registry zijn ingebouwde gebeurtenisbronnen met systeemonderwerpen waarvoor geen extra configuratie nodig is.
# Create a custom Event Grid topic
az eventgrid topic create \
--name MyEventTopic \
--resource-group MyRG \
--location eastus
# Create a subscription routing to an Azure Function
az eventgrid event-subscription create \
--name myFunctionSub \
--source-resource-id '/subscriptions/.../providers/Microsoft.EventGrid/topics/MyEventTopic' \
--endpoint '/subscriptions/.../providers/Microsoft.Web/sites/myFunctionApp/functions/EventHandler'Gebeurtenisschema
Gebeurtenissen die naar Event Grid worden gepubliceerd, volgen een standaardschema voor JSON met verplichte velden: id (unieke identificatie), eventType (bijvoorbeeld Microsoft.Storage.BlobCreated), subject (pad naar de gebeurtenisresource), eventTime (tijdstempel volgens ISO 8601), dataVersion en data (gegevens die specifiek zijn voor de gebeurtenis). Event Grid ondersteunt ook het CloudEvents-schema (de CNCF-standaard) voor interoperabiliteit met andere gebeurtenisplatforms.
// Event Grid event payload (Event Grid schema)
[
{
'id': 'b781910b-3000-4f19-a4c2-b6b9c4ca7a12',
'eventType': 'Microsoft.Storage.BlobCreated',
'subject': '/blobServices/default/containers/uploads/blobs/photo.jpg',
'eventTime': '2025-01-15T12:30:00.000Z',
'data': {
'api': 'PutBlockList',
'url': 'https://mystorageacct.blob.core.windows.net/uploads/photo.jpg',
'contentType': 'image/jpeg',
'contentLength': 524288
},
'dataVersion': '',
'metadataVersion': '1'
}
]Gebeurtenissen filteren
Gebeurtenisabonnementen ondersteunen filtering om ruis aan de kant van de abonnee te beperken. U kunt filteren op gebeurtenistype (alleen BlobCreated ontvangen en niet BlobDeleted), op een voorvoegsel of achtervoegsel van het onderwerp (alleen blobs in een specifieke container) of met geavanceerde filters op elk veld in de gebeurtenisgegevens, met operators zoals StringContains, NumberGreaterThan en BoolEquals. Het filteren gebeurt aan de serverzijde, zodat abonnees alleen gebeurtenissen ontvangen die aan hun criteria voldoen.
# Subscribe to BlobCreated events for .jpg files only
az eventgrid event-subscription create \
--name jpgImageSub \
--source-resource-id '/subscriptions/.../storageAccounts/mystorageaccount' \
--endpoint 'https://myfunction.azurewebsites.net/api/ProcessImage' \
--included-event-types 'Microsoft.Storage.BlobCreated' \
--subject-ends-with '.jpg'Event Grid versus Event Hubs versus Service Bus
Drie Azure-services verwerken gebeurtenissen en berichten — kies op basis van uw scenario. Event Grid is bedoeld voor reactieve gebeurtenisroutering (kleine volumes, afzonderlijke, reactieve gebeurtenissen — bijvoorbeeld een melding over een gewijzigde resource). Event Hubs is bedoeld voor streaming van gebeurtenissen met hoge doorvoer (miljoenen gebeurtenissen per seconde, telemetrie, bigdata-pijplijnen). Service Bus is bedoeld voor berichtenverkeer binnen ondernemingen, met volgordehandhaving, deduplicatie, dead-lettering en transacties (verwerking van bestellingen en financiële transacties).
// Decision guide:
// Event Grid — 'Something happened, react to it'
// Azure resource events, webhooks, low-latency fan-out
// Price: per event (cheap for low volume)
// Event Hubs — 'Capture a firehose of streaming data'
// IoT telemetry, log aggregation, real-time analytics
// Price: per throughput unit + capture
// Service Bus — 'Reliable message delivery between services'
// Order processing, workflow steps, dead-letter queues
// Price: per operation + messaging unitsAangepaste gebeurtenissen publiceren
Publiceer aangepaste gebeurtenissen naar een Event Grid-onderwerp met een eenvoudig HTTP POST-verzoek en de toegangssleutel van het onderwerp. Elke service of toepassing die HTTP-verzoeken kan uitvoeren, kan gebeurtenissen publiceren. Daardoor kunt u eenvoudig gebeurtenissen genereren vanuit on-premises toepassingen, services van derden of Azure-services die geen systeemeigen ondersteuning voor Event Grid hebben. Voeg voor efficiëntie per POST maximaal 1 MB aan gebeurtenissen samen.
# Get the topic endpoint and key
TOPIC_ENDPOINT=$(az eventgrid topic show --name MyEventTopic --resource-group MyRG --query endpoint -o tsv)
TOPIC_KEY=$(az eventgrid topic key list --name MyEventTopic --resource-group MyRG --query key1 -o tsv)
# Publish a custom event
curl -X POST $TOPIC_ENDPOINT \
-H 'Content-Type: application/json' \
-H "aeg-sas-key: $TOPIC_KEY" \
-d '[{
"id": "event-001",
"eventType": "Contoso.OrderPlaced",
"subject": "/orders/ORD-12345",
"eventTime": "2025-01-15T12:00:00Z",
"data": { "orderId": "ORD-12345", "total": 99.99 },
"dataVersion": "1.0"
}]'Beleid voor dead-lettering en nieuwe pogingen
Als een poging om een gebeurtenis te bezorgen mislukt (de abonnee retourneert geen 2xx HTTP-status), voert Event Grid maximaal 24 uur lang nieuwe pogingen uit met exponentiële back-off en willekeurige variatie (configureerbaar tot 72 uur), met maximaal 30 pogingen. Nadat alle pogingen zijn verbruikt, kan Event Grid niet-bezorgde gebeurtenissen via dead-lettering opslaan in een Azure Blob Storage-container voor handmatig onderzoek. Configureer dead-lettering wanneer betrouwbare bezorging van gebeurtenissen van cruciaal belang is en u mislukte gebeurtenissen moet controleren of opnieuw moet verwerken.
# Configure dead-letter storage and retry for a subscription
az eventgrid event-subscription update \
--name myFunctionSub \
--source-resource-id '/subscriptions/.../topics/MyEventTopic' \
--deadletter-endpoint '/subscriptions/.../storageAccounts/mystg/blobServices/default/containers/deadletter' \
--max-delivery-attempts 30 \
--event-ttl 1440 # 24 hours in minutesOverzicht van Azure Event Hubs
Azure Event Hubs is een gedistribueerd platform voor datastreaming dat miljoenen gebeurtenissen per seconde kan ontvangen en verwerken. Het gebruikt een gepartitioneerd model voor verbruikers — gebeurtenissen worden over partities verdeeld en elke verbruikersgroep leest gebeurtenissen onafhankelijk en in zijn eigen tempo. Hierdoor kunnen meerdere verbruikers dezelfde stream verwerken zonder coördinatie. Veelvoorkomende toepassingen zijn het opnemen van IoT-telemetrie, het verzamelen van toepassingslogboeken, clickstreamanalyse en datapijplijnen voor realtime dashboards.
# Create an Event Hubs namespace and hub
az eventhubs namespace create \
--name myEventHubNS \
--resource-group MyRG \
--location eastus \
--sku Standard
az eventhubs eventhub create \
--name telemetry \
--namespace-name myEventHubNS \
--resource-group MyRG \
--partition-count 8 \
--message-retention 3 # Days to retain eventsAzure Service Bus voor betrouwbaar berichtenverkeer
Azure Service Bus is een berichtenbroker voor ondernemingen die wachtrijen (punt-naar-punt) en onderwerpen met abonnementen (publiceren en abonneren) biedt. In tegenstelling tot Event Grid (fire-and-forget) en Event Hubs (streaming) garandeert Service Bus bezorging in de juiste volgorde (FIFO-wachtrijen), detectie van duplicaten, dead-letter-wachtrijen voor verwerkingsfouten, berichtsessies voor gegroepeerde verwerking en transacties — allemaal essentieel voor workflows voor financiële transacties en orderverwerking.
# Create a Service Bus namespace and queue
az servicebus namespace create \
--name myServiceBusNS \
--resource-group MyRG \
--location eastus \
--sku Standard
az servicebus queue create \
--name order-processing \
--namespace-name myServiceBusNS \
--resource-group MyRG \
--enable-dead-lettering-on-message-expiration true \
--max-delivery-count 10 # Move to dead-letter after 10 failed attemptsPraktisch gebeurtenisgestuurd patroon: bestanden verwerken
Een veelgebruikt gebeurtenisgestuurd patroon in Azure: een gebruiker uploadt een bestand naar Blob Storage, waarna een gebeurtenis BlobCreated naar Event Grid wordt verzonden. Event Grid routeert de gebeurtenis naar een Azure Function die het bestand verwerkt (een afbeelding verkleint, tekst extraheert of gegevens valideert) en het resultaat naar Azure SQL Database schrijft. Als de verwerking mislukt, wordt de gebeurtenis via dead-lettering opgeslagen in een opslagcontainer. Voor deze volledige pijplijn is geen polling nodig en zijn er geen permanente rekenresources nodig wanneer het systeem niet actief is.
// Azure Function: process image on BlobCreated event
module.exports = async function (context, eventGridEvent) {
const blobUrl = eventGridEvent.data.url;
const blobName = eventGridEvent.subject.split('/blobs/').pop();
context.log('Processing image:', blobName);
// Process via Cognitive Services Vision API
const tags = await analyzeImage(blobUrl);
// Write metadata to Cosmos DB via output binding
context.bindings.cosmosOutput = {
id: blobName,
tags,
processedAt: new Date().toISOString()
};
context.log('Processing complete for:', blobName);
};Korte controle
Test uw begrip van de concepten uit Microsoft Azure Fundamentals (AZ-900) die in deze les aan bod kwamen.
Samenvatting van de les
In deze les hebt u geleerd dat Azure Event Grid afzonderlijke gebeurtenissen van publiceerders naar abonnees routeert met pushbezorging, filtering en dead-lettering, wat het belangrijkste verschil is tussen Event Grid (reactieve gebeurtenissen), Event Hubs (streaming) en Service Bus (betrouwbaar berichtenverkeer voor ondernemingen), en hoe u gebeurtenisgestuurde pijplijnen bouwt door gebeurtenissen uit Blob Storage via Event Grid naar Azure Functions te koppelen. Hierna verkennen we Azure DevOps-services.
Leer Cloud & IT Cert Prep met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 150
- Lessen
- 600
Veelgestelde vragen
Is de les “Event Grid en eventgedreven architectuur” gratis?
Ja — de volledige tekst van “Event Grid en eventgedreven architectuur” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Cloud & IT Cert Prep wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Cloud & IT Cert Prep bevat in totaal 4 lessen.
Wat leer ik in “Event Grid en eventgedreven architectuur”?
Routeer gebeurtenissen van Azure-services en aangepaste publishers met Event Grid, verspreid ze naar meerdere subscribers en vergelijk Event Grid met Event Hubs en Service Bus. Je oefent met Cloud & IT Cert Prep door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Cloud & IT Cert Prep te beginnen?
Ervaring vooraf is niet nodig. Cloud & IT Cert Prep op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Event Grid en eventgedreven architectuur”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Cloud & IT Cert Prep?
Ja. Elke les over Cloud & IT Cert Prep bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Triggers en bindings van Azure Functions
- Durable Functions voor stateful workflows
- Azure Logic Apps
- Event Grid en eventgedreven architectuur