Реакция на события конфигурации приложения Azure

События конфигурации приложения Azure позволяют приложениям реагировать на изменения пар «ключ-значение». Это происходит без необходимости в наличии сложного кода или дорогих и неэффективных службах опроса. Вместо этого события принудительно отправляются через Сетку событий Azure подписчикам, таким как Функции Azure, Azure Logic Apps или даже вашему собственному прослушивателю HTTP. Особенно важно, что вы платите только за то, что используете.

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

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

Ознакомьтесь с разделом Использовать сетку событий для уведомлений об изменении данных в качестве быстрого примера.

Diagram that shows Event Grid Model.

Доступные типы событий

Сетка событий использует подписки на события для маршрутизации сообщений о событиях подписчикам. Конфигурация приложений Azure выдает события перечисленных ниже типов.

Тип события Description
Microsoft.AppConfiguration.KeyValueModified Инициируется при создании или замене пары "ключ-значение".
Microsoft.AppConfiguration.KeyValueDeleted Инициируется при удалении пары "ключ-значение".
Microsoft.AppConfiguration.SnapshotCreated Вызывается при создании моментального снимка.
Microsoft.AppConfiguration.SnapshotModified Вызывается при изменении моментального снимка.

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

Событие содержит следующие высокоуровневые данные:

Свойство Type Описание:
source строка Полный путь к ресурсу источника событий. Это поле защищено от записи. Это значение предоставляет Сетка событий.
subject строка Определенный издателем путь к субъекту события.
type строка Один из зарегистрированных типов событий для этого источника событий.
time строка Время создания события с учетом времени поставщика в формате UTC.
id строка Уникальный идентификатор события.
data объект Данные события Конфигурации приложений.
specversion строка Версия спецификации схемы CloudEvents.

Объект данных имеет следующие свойства:

Событие key-value

Свойство Type Описание:
key строка Ключ пары «ключ-значение», которая была изменена или удалена.
label строка Ярлык измененной или удаленной пары "ключ-значение" (при наличии такового).
etag строка Для KeyValueModified — etag новой пары "ключ-значение". Для KeyValueDeleted etag удаленной пары «ключ-значение».
syncToken строка Маркер синхронизации, представляющий состояние сервера после события key-value.

Моментальный снимок

Свойство Type Описание:
name строка Имя созданного или измененного моментального снимка.
etag строка Для SnapshotCreated etag нового моментального снимка. Для SnapshotModified etag моментального снимка, который был изменен.
syncToken строка Маркер синхронизации, представляющий состояние сервера после события моментального снимка.

Пример события

В следующем примере показана схема события изменения пары "ключ-значение".

[{
  "id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
  "source": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/microsoft.appconfiguration/configurationstores/contoso",
  "subject": "https://contoso.azconfig.io/kv/Foo?label=FizzBuzz",
  "data": {
    "key": "Foo",
    "label": "FizzBuzz",
    "etag": "FnUExLaj2moIi4tJX9AXn9sakm0"
  },
  "type": "Microsoft.AppConfiguration.KeyValueModified",
  "time": "2019-05-31T20:05:03Z",
  "specversion": "1.0"
}]

В следующем примере показана схема удаленного события key-value:

[{
  "id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
  "source": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/microsoft.appconfiguration/configurationstores/contoso",
  "subject": "https://contoso.azconfig.io/kv/Foo?label=FizzBuzz",
  "data": {
    "key": "Foo",
    "label": "FizzBuzz",
    "etag": "FnUExLaj2moIi4tJX9AXn9sakm0"
  },
  "type": "Microsoft.AppConfiguration.KeyValueDeleted",
  "time": "2019-05-31T20:05:03Z",
  "specversion": "1.0"
}]

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

[{
  "source": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/microsoft.appconfiguration/configurationstores/contoso",
  "subject": "https://contoso.azconfig.io/kvsnapshots/Foo",
  "type": "Microsoft.AppConfiguration.SnapshotCreated",
  "time": "2023-09-02T20:05:03.0000000Z",
  "id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
  "data": {
    "name": "Foo",
    "etag": "FnUExLaj2moIi4tJX9AXn9sakm0",
    "syncToken": "zAJw6V16=Njo1IzUxNjQ2NzM=;sn=5164673"
  },
  "specversion": "1.0"
}]

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

[{
  "source": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/microsoft.appconfiguration/configurationstores/contoso",
  "subject": "https://contoso.azconfig.io/snapshots/Foo",
  "type": "Microsoft.AppConfiguration.SnapshotModified",
  "time": "2023-09-03T20:05:03.0000000Z",
  "id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
  "data": {
    "name": "Foo",
    "etag": "FnUExLaj2moIi4tJX9AXn9sakm0",
    "syncToken": "zAJw6V16=Njo1IzUxNjQ2NzM=;sn=5164673"
  },
  "specversion": "1.0"
}]

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

Рекомендации по потреблению событий

Приложения, которые обрабатывают события конфигурации приложения, должны следовать нижеприведенным рекомендуемым методам:

  • Для маршрутизации событий в один обработчик событий можно настроить несколько подписок, поэтому не следует рассчитывать на то, что события приходят из определенного источника. Вместо этого проверьте тему сообщения, чтобы убедиться, что экземпляр службы "Конфигурация приложений" отправляет событие.
  • Проверьте eventType. Не следует предполагать, что все получаемые события будут иметь ожидаемые типы.
  • Используйте поля etag, чтобы понять, актуальна ли ваша информация об объектах.
  • Используйте поля программы упорядочения, чтобы понять порядок событий на любом конкретном объекте.
  • Используйте поле темы для доступа к измененной паре «ключ-значение».

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

Узнайте больше о Сетке событий и попробуйте события службы "Конфигурация приложений Azure":

An introduction to Azure Event Grid (Общие сведения о службе "Сетка событий Azure")