Esquema de eventos da Grade de Eventos do Azure

Este artigo descreve o esquema de grade de eventos, que é um formato de evento proprietário, não extensível, mas totalmente funcional. A Grelha de Eventos continua a suportar este formato de evento e continuará a suportá-lo. No entanto, CloudEvents é o formato de evento recomendado para usar. Se você estiver usando aplicativos que usam o formato de Grade de Eventos, poderá achar úteis as informações na seção [CloudEvents] que descreve as transformações entre a Grade de Eventos e o formato CloudEvents suportado pela Grade de Eventos.

Este artigo descreve em detalhes as propriedades e o esquema para o formato de grade de eventos. Os eventos consistem em um conjunto de quatro propriedades de cadeia de caracteres necessárias. As propriedades são comuns a todos os eventos de qualquer editor. O objeto de dados tem propriedades específicas para cada editor. Para tópicos do sistema, essas propriedades são específicas do provedor de recursos, como o Armazenamento do Azure ou os Hubs de Eventos do Azure.

As fontes de eventos enviam eventos para a Grade de Eventos do Azure em uma matriz, que pode ter vários objetos de evento. Ao postar eventos em um tópico da Grade de Eventos, a matriz pode ter um tamanho total de até 1 MB. Cada evento na matriz é limitado a 1 MB. Se um evento ou a matriz for maior do que os limites de tamanho, você receberá a resposta 413 Payload Too Large. No entanto, as operações são cobradas em incrementos de 64 KB. Assim, eventos com mais de 64 KB incorrem em encargos de operações como se fossem eventos múltiplos. Por exemplo, um evento de 130 KB incorreria em operações como se fossem três eventos separados.

A Grade de Eventos envia os eventos para os assinantes em uma matriz que tem um único evento. Esse comportamento pode mudar no futuro.

Você pode encontrar o esquema JSON para o evento Grade de Eventos e a carga útil de dados de cada editor do Azure no repositório de Esquema de Eventos.

Esquema de eventos

O exemplo a seguir mostra as propriedades usadas por todos os editores de eventos:

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

Por exemplo, o esquema publicado para um evento de armazenamento de Blob do 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"
  }
]

Propriedades do evento

Todos os eventos têm os mesmos dados de nível superior:

Propriedade Type Obrigatório Description
topic string Não, mas se incluído, deve corresponder exatamente ao tópico Grade de Eventos ID do Azure Resource Manager. Se não estiver incluído, a Grade de Eventos será marcada no evento. Caminho completo do recurso para a origem do evento. Este campo não pode ser gravado. O Event Grid fornece este valor.
subject string Sim Caminho definido pelo publicador para o assunto do evento.
eventType string Sim Um dos tipos de eventos registados para esta origem de evento.
eventTime string Sim A hora em que o evento é gerado com base na hora UTC do provedor.
id string Sim Identificador exclusivo do evento.
data objeto Sim Dados de evento específicos do provedor de recursos.
dataVersion string Não, mas será carimbado com um valor vazio. A versão do esquema do objeto de dados. O publicador define a versão do esquema.
metadataVersion string Não obrigatório, mas se incluído, deve corresponder exatamente ao esquema metadataVersion de grade de eventos (atualmente, apenas 1). Se não estiver incluído, a Grade de Eventos será marcada no evento. A versão do esquema dos metadados do evento. O Event Grid define o esquema das propriedades de nível superior. O Event Grid fornece este valor.

Para saber mais sobre as propriedades no objeto de dados, consulte a fonte do evento:

Para tópicos personalizados, o editor de eventos determina o objeto de dados. Os dados de nível superior devem ter os mesmos campos que os eventos padrão definidos por recursos.

Ao publicar eventos em tópicos personalizados, crie assuntos para os seus eventos que facilitem aos subscritores saber se estão interessados no evento. Os subscritores utilizam o assunto para filtrar e encaminhar eventos. Considere fornecer o caminho para onde o evento aconteceu, para que os assinantes possam filtrar por segmentos desse caminho. O caminho permite que os assinantes filtrem eventos de forma restrita ou ampla. Por exemplo, se você fornecer um caminho de três segmentos, como /A/B/C no assunto, os assinantes poderão filtrar pelo primeiro segmento /A para obter um amplo conjunto de eventos. Esses assinantes recebem eventos com assuntos como /A/B/C ou /A/D/E. Outros subscritores podem filtrar para /A/B obter um conjunto mais restrito de eventos.

Às vezes, o assunto precisa de mais detalhes sobre o que aconteceu. Por exemplo, o editor de Contas de Armazenamento fornece o assunto /blobServices/default/containers/<container-name>/blobs/<file> quando um arquivo é adicionado a um contêiner. Um assinante pode filtrar pelo caminho /blobServices/default/containers/testcontainer para obter todos os eventos para esse contêiner, mas não outros contêineres na conta de armazenamento. Um assinante também pode filtrar ou rotear pelo sufixo .txt para trabalhar apenas com arquivos de texto.

CloudEventos

CloudEvents é o formato de evento recomendado para usar. A Grade de Eventos do Azure continua investindo em recursos relacionados a, pelo menos , o formato JSON do CloudEvents. Dado o fato de que algumas fontes de eventos, como os serviços do Azure, usam o formato de Grade de Eventos, a tabela a seguir é fornecida para ajudá-lo a entender a transformação suportada ao usar os formatos CloudEvents e Grade de Eventos como um esquema de entrada em tópicos e como um esquema de saída em assinaturas de eventos. Um esquema de saída de Grade de Eventos não pode ser usado ao usar o CloudEvents como um esquema de entrada porque o CloudEvents oferece suporte a atributos de extensão que não são suportados pelo esquema de Grade de Eventos.

Esquema de entrada Esquema de saída
Formato CloudEvents Formato CloudEvents
Formato da grelha de eventos Formato CloudEvents
Formato da grelha de eventos Formato da grelha de eventos

Próximos passos

  • Para obter uma introdução à Grade de Eventos do Azure, consulte O que é a Grade de Eventos?
  • Para obter mais informações sobre como criar uma assinatura da Grade de Eventos do Azure, consulte Esquema de assinatura da Grade de Eventos.