Schema di eventi di Griglia di eventi di Azure

Questo articolo descrive lo schema di Griglia di eventi, che è un formato di evento proprietario, non successivo, ma completamente funzionale. Griglia di eventi supporta ancora questo formato di evento e continuerà a supportarlo. Tuttavia, CloudEvents è il formato di evento consigliato da usare. Se si usano applicazioni che usano il formato griglia di eventi, è possibile trovare utili le informazioni nella sezione [CloudEvents] che descrive le trasformazioni tra griglia di eventi e il formato CloudEvents supportato da Griglia di eventi.

Questo articolo descrive in dettaglio le proprietà e lo schema per il formato griglia di eventi. Gli eventi consistono in un set di quattro proprietà stringa necessarie. Le proprietà sono comuni a tutti gli eventi di qualsiasi publisher. L'oggetto dati include proprietà specifiche per ogni publisher. Per gli argomenti di sistema, queste proprietà sono specifiche del provider di risorse, ad esempio Archiviazione di Azure o Hub eventi di Azure.

Le origini eventi inviano eventi a Griglia di eventi di Azure in una matrice, che può contenere diversi oggetti evento. Durante la pubblicazione degli eventi in un argomento della griglia di eventi, le dimensioni totali della matrice possono raggiungere 1 MB. Ogni evento nella matrice è limitato a 1 MB. Se un evento o una matrice supera i limiti delle dimensioni, si riceve la risposta 413 Payload Too Large (413 Playload troppo grande). Tuttavia, le operazioni vengono addebitate in incrementi di 64 kB. Pertanto, gli eventi oltre 64 KB comportano addebiti di operazione come se fossero più eventi. Ad esempio, un evento di 130 KB comporta operazioni come se fossero tre eventi distinti.

Griglia di eventi invia gli eventi ai sottoscrittori in una matrice che contiene un singolo evento. Questo comportamento può cambiare in futuro.

È possibile trovare lo schema JSON per l'evento di Griglia di eventi e il payload dei dati per ogni editore di Azure nell'archivio degli schemi di eventi.

Schema di eventi

L'esempio seguente illustra le proprietà usate da tutti gli autori di eventi:

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]

Ad esempio, lo schema pubblicato per un evento di archiviazione BLOB di Azure è:

[
  {
    "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"
  }
]

Proprietà dell'evento

Tutti gli eventi contengono gli stessi dati di livello principale indicati di seguito:

Proprietà Type Obbligatorio Descrizione
topic stringa No, ma se incluso, deve corrispondere esattamente all'argomento griglia di eventi ID di Azure Resource Manager. Se non è incluso, griglia di eventi stampa l'evento. Percorso completo della risorsa all'origine evento. Questo campo non è scrivibile. Questo valore viene specificato da Griglia di eventi.
subject string Percorso definito dall'editore all'oggetto dell'evento.
eventType string Uno dei tipi di evento registrati per l'origine evento.
eventTime string Ora di generazione dell'evento in base all'ora UTC del provider.
id string Identificatore univoco per l'evento.
data oggetto Dati dell'evento specifici del provider di risorse.
dataVersion string No, ma verrà stampato con un valore vuoto. Versione dello schema dell'oggetto dati. La versione dello schema è definita dall'origine di pubblicazione.
metadataVersion string Non obbligatorio, ma se incluso, deve corrispondere esattamente allo schema metadataVersion di Griglia di eventi (attualmente solo 1). Se non è incluso, griglia di eventi stampa l'evento. Versione dello schema dei metadati dell'evento. Lo schema delle proprietà di primo livello è definito da Griglia di eventi. Questo valore viene specificato da Griglia di eventi.

Per informazioni sulle proprietà nell'oggetto dati, vedere l'origine dell'evento:

Per gli argomenti personalizzati è il publisher di eventi a determinare l'oggetto dati. I dati di primo livello devono includere gli stessi campi degli eventi standard definiti dalla risorsa.

Quando si pubblicano eventi in argomenti personalizzati, creare oggetti per gli eventi in modo che i sottoscrittori possano sapere più facilmente se sono interessati all'evento. I sottoscrittori usano l'oggetto per filtrare e instradare gli eventi. Provare a specificare il percorso per cui si è verificato l'evento, in modo che i sottoscrittori possano filtrare in base ai segmenti di tale percorso. Il percorso consente ai sottoscrittori di filtrare gli eventi in modo più ampio o ristretto. Ad esempio, se si specifica un percorso di tre segmenti, ad esempio /A/B/C nell'oggetto del messaggio, i sottoscrittori possono filtrare in base al primo segmento /A per ottenere un'ampia serie di eventi. Tali sottoscrittori ricevono eventi con oggetti come /A/B/C o /A/D/E. Altri sottoscrittori possono filtrare in base a /A/B per ottenere un set di eventi più ristretto.

A volte nell'oggetto sono necessarie informazioni più dettagliate sull'evento che si è verificato. Ad esempio, l’editore dell’account di archiviazione fornisce l'oggetto /blobServices/default/containers/<container-name>/blobs/<file> quando un file viene aggiunto a un contenitore. Un sottoscrittore può filtrare in base al percorso /blobServices/default/containers/<container-name>/ per ottenere tutti gli eventi per tale contenitore, ma non per altri contenitori nell'account di archiviazione. Un sottoscrittore potrebbe inoltre filtrare o inviare in base al suffisso .txt per operare solo con i file di testo.

CloudEvents

CloudEvents è il formato di evento consigliato da usare. Griglia di eventi di Azure continua a investire in funzionalità relative almeno Formato JSON CloudEvents. Dato che alcune origini eventi come i servizi di Azure usano il formato Griglia di eventi, viene fornita la tabella seguente per comprendere la trasformazione supportata quando si usano i formati CloudEvents e Griglia di eventi come schema di input negli argomenti e come schema di output nelle sottoscrizioni di eventi. Non è possibile usare uno schema di output di Griglia di eventi quando si usa CloudEvents come schema di input perché CloudEvents supporta gli attributi di estensione non supportati dallo schema di Griglia di eventi.

Schema di input Schema di output.
Formato CloudEvents Formato CloudEvents
Formato di Griglia di eventi Formato CloudEvents
Formato di Griglia di eventi Formato di Griglia di eventi

Passaggi successivi