Схема событий службы "Сетка событий Azure"

В этой статье описывается схема сетки событий, которая является собственным, неисчерпнутым, но полностью функциональным форматом событий. Сетка событий по-прежнему поддерживает этот формат событий и будет продолжать поддерживать его. Однако CloudEvents — это рекомендуемый формат событий. Если вы используете приложения, использующие формат сетки событий, вы можете найти полезные сведения в разделе [CloudEvents], описывающие преобразования между сеткой событий и форматом CloudEvents, поддерживаемым сеткой событий.

В этой статье подробно описаны свойства и схема формата сетки событий. События содержат набор из четырех обязательных свойств строки. Свойства являются общими для всех событий от любого издателя. Объект данных имеет свойства, характерные для каждого издателя. В случае с системными разделами эти свойства относятся к поставщику ресурсов, включая службу хранилища Azure или Центры событий Azure.

Источники событий отправляют события в службу "Сетка событий Azure" в массиве, в котором может быть несколько объектов событий. При публикации событий в раздел сетки событий массив может иметь общий размер до 1 МБ. Каждое событие в массиве ограничено 1 МБ. Если событие или массив превышает пределы размера, поступает ответ 413 (слишком большой объем полезных данных). но они обрабатываются пакетами по 64 КБ, Таким образом, события более 64 КБ несут расходы на операции, как будто они были несколькими событиями. Например, событие, равное 130 КБ, приведет к операциям, как будто это было три отдельных события.

Служба "Сетка событий" отправляет события подписчикам в массиве с одним событием. Это поведение может измениться в будущем.

Схему JSON для события сетки событий и полезные данные каждого издателя Azure вы найдете в хранилище схемы событий.

Схема событий

В следующем примере показаны свойства, которые используются все издатели событий:

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

Например, вот схема, опубликованная для события хранения больших двоичных объектов 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"
  }
]

Свойства событий

Во всех событиях есть следующие одинаковые данные верхнего уровня:

Свойство Тип Обязательно Описание
topic строка Нет, но если он указан, он должен точно соответствовать разделу сетки событий идентификатора Azure Resource Manager. Если он не включен, метки сетки событий на событие. Полный путь к ресурсу источника событий. Это поле защищено от записи. Это значение предоставляет Сетка событий.
subject строка Да Определенный издателем путь к субъекту события.
eventType строка Да Один из зарегистрированных типов событий для этого источника событий.
eventTime строка Да Время создания события с учетом времени поставщика в формате UTC.
id строка Да Уникальный идентификатор события.
data объект Да Данные события, относящиеся к поставщику ресурсов.
dataVersion строка Нет, но будет отмечено пустым значением. Версия схемы для объекта данных. Версию схемы определяет издатель.
metadataVersion строка Не требуется, но если он указан, должен точно соответствовать схеме сетки событий metadataVersion (только настоящее время 1). Если он не включен, метки сетки событий на событие. Версия схемы для метаданных события. Служба "Сетка событий" определяет схему свойств верхнего уровня. Это значение предоставляет Сетка событий.

Дополнительные сведения о свойствах в объекте данных см. в источнике события:

Для пользовательских разделов объект данных определяет издатель события. Данные верхнего уровня должны иметь те же поля, что и стандартные определенные события ресурса.

При публикации событий в пользовательских разделах создавайте темы для событий, чтобы подписчикам было проще определить, представляет ли событие для них интерес. Подписчики используют темы для фильтрации и маршрутизации событий. Рекомендуем указать путь к расположению, в котором произошло событие, чтобы подписчики могли выполнить фильтрацию по сегментам этого пути. Путь позволяет подписчикам сузить или расширить область фильтрации. Например, если указать в теме трехсегментный путь, такой как /A/B/C, подписчики смогут выполнить фильтрацию по первому сегменту /A, чтобы получить широкий набор событий. Эти подписчики получат события с такими темами, как /A/B/C или /A/D/E. Другие подписчики могут выполнить фильтрацию по /A/B, чтобы получить более узкий набор событий.

Иногда в теме требуется подробнее указать, что произошло. Например, при добавлении файла в контейнер издатель Учетной записи хранения указывает тему /blobServices/default/containers/<container-name>/blobs/<file>. Подписчик может выполнять фильтрацию по пути /blobServices/default/containers/<container-name>/, чтобы получить все события этого контейнера, но не других контейнеров в учетной записи хранения. Также подписчик может выполнить фильтрацию или маршрутизацию по суффиксу .txt, чтобы работать только с текстовыми файлами.

Источники облачных

CloudEvents — это рекомендуемый формат событий. Сетка событий Azure продолжает инвестировать в функции, связанные по крайней мере сФормат JSON CloudEvents. Учитывая тот факт, что некоторые источники событий, такие как службы Azure, используют формат сетки событий, приведена в следующей таблице, которая поможет вам понять, что преобразование поддерживается при использовании CloudEvents и форматов сетки событий в качестве входной схемы в разделах и в качестве выходной схемы в подписках на события. Выходная схема Сетки событий не может использоваться при использовании CloudEvents в качестве входной схемы, так как CloudEvents поддерживает атрибуты расширения, которые не поддерживаются схемой сетки событий.

Входная схема Выходная схема
Формат CloudEvents Формат CloudEvents
Формат сетки событий Формат CloudEvents
Формат сетки событий Формат сетки событий

Следующие шаги