Compartir a través de

响应 Azure 应用配置事件

通过 Azure 应用配置事件,应用程序能够响应键值更改。 实现这一点不需要复杂的代码或成本高昂但效率低下的轮询服务, 相反,事件通过 Azure 事件网格推送给订阅方(例如 Azure FunctionsAzure 逻辑应用),甚至推送给你自己的自定义 HTTP 侦听器。 至关重要的是,你只为你使用的资源付费。

Azure 应用配置事件会发送到 Azure 事件网格,该服务通过丰富的重试策略和死信传递向应用程序提供可靠的传递服务。 有关详细信息,请参阅事件网格消息传递和重试

常见的应用配置事件方案包括刷新应用程序配置、触发部署或任何面向配置的工作流。 基于事件的体系结构对于鲜少更改,但要求立即响应的情况尤为有效。

相关简单实例,请参阅将事件网格用于数据更改通知

Diagram that shows Event Grid Model.

可用的 Azure 应用配置事件

事件网格使用事件订阅将事件消息路由到订阅方。 Azure 应用配置事件订阅可以包括两种类型的事件:

事件名称 描述
Microsoft.AppConfiguration.KeyValueModified 创建或替换键值时触发。
Microsoft.AppConfiguration.KeyValueDeleted 删除键值时触发。

事件架构

Azure 应用配置事件包含响应数据更改所需的全部信息。 可以识别应用程序配置事件,因为 eventType 属性以 Microsoft.AppConfiguration 开头。 有关事件网格事件属性使用情况的其他信息,请参阅事件网格事件架构

属性 类型 说明
主题 字符串 发出事件的应用程序配置的完整 Azure 资源管理器 ID。
subject 字符串 作为事件主题的键值的 URI。
EventTime 字符串 生成事件的日期/时间,采用 ISO 8601 格式。
eventType string Microsoft.AppConfiguration.KeyValueModifiedMicrosoft.AppConfiguration.KeyValueDeleted
ID 字符串 此事件的唯一标识符。
dataVersion string 数据对象的架构版本。
metadataVersion 字符串 顶级属性的架构版本。
data object Azure 应用程序配置特定事件数据的集合。
data.key 字符串 已修改或已删除的键/值的键。
data.label 字符串 已修改或已删除的键/值的标签(如果有)。
data.etag 字符串 对于 KeyValueModified,为新键/值的 etag。 对于 KeyValueDeleted,为已删除的键/值的 etag。

以下是 KeyValueModified 事件的示例:

[{
  "id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
  "topic": "/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"
  },
  "eventType": "Microsoft.AppConfiguration.KeyValueModified",
  "eventTime": "2019-05-31T20:05:03Z",
  "dataVersion": "1",
  "metadataVersion": "1"
}]

使用事件的做法

处理应用配置事件的应用程序应当遵循以下建议的做法:

  • 可配置多个订阅将事件路由至同一事件处理程序,因此不可假定事件均来自某个特定的源。 相反,应检查消息的主题,从而确保应用程序配置实例正在发送事件。
  • 请检查 eventType,并且不可假定所接收的所有事件均为预期的类型。
  • 使用 etag 字段了解有关对象的信息是否仍是最新的。
  • 使用 sequencer 字段以了解任意特定对象上事件的顺序。
  • 使用 subject 字段以访问修改后的键值。

后续步骤

若要了解有关事件网格的详细信息并试用 Azure 应用程序配置事件,请参阅: