你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

响应 Azure 应用配置事件

Azure 应用配置事件使应用程序能够响应键值的变化。 无需复杂的代码或成本高昂且效率低下的轮询服务即可完成此作。 相反,事件会通过 Azure 事件网格 推送到订阅者,例如 Azure FunctionsAzure 逻辑应用,甚至推送到你自己的自定义 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 架构规范版本。

数据对象具有以下属性:

键值事件

资产 类型 Description
key 字符串 已修改或删除的键值键。
label 字符串 已修改或删除的键值的标签(如果有)。
etag 字符串 对于 KeyValueModified 新键值的 etag。 对于 KeyValueDeleted 已删除的键值 etag。
syncToken 字符串 表示键值事件后服务器状态的同步令牌。

快照事件

资产 类型 Description
name 字符串 已创建或修改的快照的名称。
etag 字符串 对于 SnapshotCreated 新快照的 etag。 对于 SnapshotModified 已修改的快照的 etag。
syncToken 字符串 表示快照事件后服务器状态的同步令牌。

示例事件

以下示例显示了键值修改事件的架构:

[{
  "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"
}]

以下示例显示了键值删除事件的架构:

[{
  "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-date。
  • 使用 sequencer 字段了解任何特定对象上的事件顺序。
  • 使用主题字段访问修改的键值。

后续步骤

若要详细了解事件网格并尝试 Azure 应用配置事件,请参阅: