Поделиться через


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

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

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

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

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

Схема с моделью сетки событий.

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

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

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

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

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

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

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

Событие key-value

Недвижимость Тип Description
key струна Ключ значения ключа, который был изменен или удален.
label струна Метка, если она есть, значения ключа, измененного или удаленного.
etag струна Для KeyValueModified etag нового ключа-значения. Для KeyValueDeleted etag удаленного значения ключа.
syncToken струна Маркер синхронизации, представляющий состояние сервера после события key-value.

Событие моментального снимка

Недвижимость Тип Description
name струна Имя созданного или измененного моментального снимка.
etag струна Для SnapshotCreated etag нового моментального снимка. Для SnapshotModified etag моментального снимка, который был изменен.
syncToken струна Маркер синхронизации, представляющий состояние сервера после события моментального снимка.

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

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

[{
  "id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
  "source": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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 Используйте поля, чтобы понять, up-toли данные о объектах по-прежнему up-to-date.
  • Используйте поля последовательности, чтобы понять порядок событий для любого конкретного объекта.
  • Используйте поле субъекта для доступа к измененному значению ключа.

Дальнейшие шаги

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