Azure Event Grid-gebeurtenisschema
In dit artikel wordt het Event Grid-schema beschreven. Dit is een eigen, nonextensible, maar volledig functionele gebeurtenisindeling. Event Grid ondersteunt deze gebeurtenisindeling nog steeds en blijft deze ondersteunen. CloudEvents is echter de aanbevolen gebeurtenisindeling die moet worden gebruikt. Als u toepassingen gebruikt die gebruikmaken van de Event Grid-indeling, vindt u mogelijk nuttige informatie in de sectie [CloudEvents] waarin de transformaties tussen de Event Grid- en CloudEvents-indeling worden beschreven die door Event Grid worden ondersteund.
In dit artikel worden de eigenschappen en het schema voor de Event Grid-indeling gedetailleerd beschreven. Gebeurtenissen bestaan uit een set van vier vereiste tekenreekseigenschappen. De eigenschappen zijn gebruikelijk voor alle gebeurtenissen van elke uitgever. Het gegevensobject heeft eigenschappen die specifiek zijn voor elke uitgever. Voor systeemonderwerpen zijn deze eigenschappen specifiek voor de resourceprovider, zoals Azure Storage of Azure Event Hubs.
Gebeurtenisbronnen verzenden gebeurtenissen naar Azure Event Grid in een matrix, die verschillende gebeurtenisobjecten kunnen bevatten. Bij het plaatsen van gebeurtenissen in een Event Grid-onderwerp kan de matrix een totale grootte van maximaal 1 MB hebben. Elke gebeurtenis in de matrix is beperkt tot 1 MB. Als een gebeurtenis of matrix groter is dan de groottelimieten, ontvangt u het antwoord 413 Payload Too Large. Bewerkingen worden echter in stappen van 64 kB in rekening gebracht. Voor gebeurtenissen van meer dan 64 kB worden dus bewerkingen in rekening gebracht alsof het meerdere gebeurtenissen waren. Een gebeurtenis met 130 kB zou bijvoorbeeld bewerkingen met zich meebrengt alsof het drie afzonderlijke gebeurtenissen zijn.
Event Grid verzendt de gebeurtenissen naar abonnees in een matrix met één gebeurtenis. Dit gedrag kan in de toekomst veranderen.
U vindt het JSON-schema voor de Event Grid-gebeurtenis en de nettolading van gegevens van elke Azure-uitgever in het gebeurtenisschemaarchief.
Notitie
De ondersteuning voor het Event Grid-gebeurtenisschema wordt niet buiten gebruik gesteld, maar er worden in de toekomst geen belangrijke verbeteringen aangebracht. We raden u aan het CloudEvents-schema te gebruiken, dat een gestandaardiseerde en protocolagnostische definitie biedt van de structuur en metagegevensbeschrijving van gebeurtenissen. Zie het Schema CloudEvents v1.0 met Azure Event Grid voor meer informatie.
Gebeurtenisschema
In het volgende voorbeeld ziet u de eigenschappen die door alle gebeurtenisuitgevers worden gebruikt:
[
{
"topic": string,
"subject": string,
"id": string,
"eventType": string,
"eventTime": string,
"data":{
object-unique-to-each-publisher
},
"dataVersion": string,
"metadataVersion": string
}
]
Het schema dat is gepubliceerd voor een Azure Blob Storage-gebeurtenis is bijvoorbeeld:
[
{
"topic": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount",
"subject": "/blobServices/default/containers/oc2d2817345i200097container/blobs/oc2d2817345i20002296blob",
"eventType": "Microsoft.Storage.BlobCreated",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"api": "PutBlockList",
"clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
"requestId": "831e1650-001e-001b-66ab-eeb76e000000",
"eTag": "0x8D4BCC2E4835CD0",
"contentType": "application/octet-stream",
"contentLength": 524288,
"blobType": "BlockBlob",
"url": "https://oc2d2817345i60006.blob.core.windows.net/oc2d2817345i200097container/oc2d2817345i20002296blob",
"sequencer": "00000000000004420000000000028963",
"storageDiagnostics": {
"batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
}
},
"dataVersion": "",
"metadataVersion": "1"
}
]
Eigenschappen van gebeurtenis
Alle gebeurtenissen hebben dezelfde gegevens op het hoogste niveau:
Eigenschap | Type | Vereist | Beschrijving |
---|---|---|---|
topic |
tekenreeks | Nee, maar als dit is opgenomen, moet dit exact overeenkomen met de Azure Resource Manager-id van het Event Grid-onderwerp. Als deze niet is opgenomen, worden event grid-stempels op de gebeurtenis weergegeven. | Volledig resourcepad naar de gebeurtenisbron. Dit veld kan niet worden geschreven. Event Grid biedt deze waarde. |
subject |
tekenreeks | Ja | Het door de uitgever gedefinieerde pad naar het gebeurtenisonderwerp. |
eventType |
tekenreeks | Ja | Een van de geregistreerde gebeurtenistypen voor deze gebeurtenisbron. |
eventTime | tekenreeks | Ja | Het tijdstip waarop de gebeurtenis wordt gegenereerd op basis van de UTC-tijd van de provider. |
id |
tekenreeks | Ja | Unieke id voor de gebeurtenis. |
data |
object | Ja | Gebeurtenisgegevens die specifiek zijn voor de resourceprovider. |
dataVersion |
tekenreeks | Nee, maar wordt gestempeld met een lege waarde. | De schemaversie van het gegevensobject. De uitgever definieert de schemaversie. |
metadataVersion |
tekenreeks | Niet vereist, maar moet, indien opgenomen, exact overeenkomen met het Event Grid-schema metadataVersion (momenteel alleen 1 ). Als deze niet is opgenomen, worden event grid-stempels op de gebeurtenis weergegeven. |
De schemaversie van de metagegevens van de gebeurtenis. Event Grid definieert het schema voor de eigenschappen op het hoogste niveau. Event Grid biedt deze waarde. |
Zie de artikelen in deze sectie: Systeemonderwerpen voor meer informatie over de eigenschappen in het gegevensobject.
Voor aangepaste onderwerpen bepaalt de gebeurtenisuitgever het gegevensobject. De gegevens op het hoogste niveau moeten dezelfde velden hebben als standaardgebeurtenissen die door resources zijn gedefinieerd.
Wanneer u gebeurtenissen publiceert naar aangepaste onderwerpen, maakt u onderwerpen voor uw gebeurtenissen waarmee abonnees gemakkelijk kunnen weten of ze geïnteresseerd zijn in de gebeurtenis. Abonnees gebruiken het onderwerp om gebeurtenissen te filteren en te routeren. Overweeg het pad op te geven voor waar de gebeurtenis is opgetreden, zodat abonnees kunnen filteren op segmenten van dat pad. Met het pad kunnen abonnees gebeurtenissen smal of breed filteren. Als u bijvoorbeeld een driesegmentpad opgeeft, zoals /A/B/C
in het onderwerp, kunnen abonnees filteren op het eerste segment /A
om een brede set gebeurtenissen te verkrijgen. Deze abonnees krijgen gebeurtenissen met onderwerpen zoals /A/B/C
of /A/D/E
. Andere abonnees kunnen filteren /A/B
om een smallere set gebeurtenissen op te halen.
Soms heeft uw onderwerp meer informatie nodig over wat er is gebeurd. De uitgever van opslagaccounts biedt bijvoorbeeld het onderwerp /blobServices/default/containers/<container-name>/blobs/<file>
wanneer een bestand wordt toegevoegd aan een container. Een abonnee kan filteren op het pad /blobServices/default/containers/<container-name>/
om alle gebeurtenissen voor die container op te halen, maar niet op andere containers in het opslagaccount. Een abonnee kan ook filteren of routeren door het achtervoegsel .txt
om alleen met tekstbestanden te werken.
CloudEvents
CloudEvents is de aanbevolen gebeurtenisindeling die moet worden gebruikt. Azure Event Grid blijft investeren in functies met betrekking tot ten minste de JSON-indeling van CloudEvents. Gezien het feit dat sommige gebeurtenisbronnen zoals Azure-services de Event Grid-indeling gebruiken, wordt de volgende tabel gegeven om inzicht te krijgen in de transformatie die wordt ondersteund bij het gebruik van CloudEvents en Event Grid-indelingen als invoerschema in onderwerpen en als een uitvoerschema in gebeurtenisabonnementen. Een Event Grid-uitvoerschema kan niet worden gebruikt bij het gebruik van CloudEvents als invoerschema omdat CloudEvents extensiekenmerken ondersteunt die niet worden ondersteund door het Event Grid-schema.
Invoerschema | Uitvoerschema |
---|---|
CloudEvents-indeling | CloudEvents-indeling |
Event Grid-indeling | CloudEvents-indeling |
Event Grid-indeling | Event Grid-indeling |
Volgende stappen
- Zie Wat is Event Grid? voor een inleiding tot Azure Event Grid.
- Zie het Event Grid-abonnementsschema voor meer informatie over het maken van een Azure Event Grid-abonnement.