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

响应 Azure 应用配置事件

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

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

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

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

Diagram that shows Event Grid Model.

可用事件类型

事件网格使用事件订阅将事件消息路由到订阅方。 Azure 应用程序配置会发出以下事件类型:

事件类型 说明
Microsoft.AppConfiguration.KeyValueModified 创建或替换键/值时引发。
Microsoft.AppConfiguration.KeyValueDeleted 删除键/值时引发。
Microsoft.AppConfiguration.SnapshotCreated 创建快照时引发。
Microsoft.AppConfiguration.SnapshotModified 修改快照时引发。

事件架构

事件具有以下顶级数据:

属性 类型​​ 说明
source string 事件源的完整资源路径。 此字段不可写入。 事件网格提供此值。
subject string 事件主题的发布者定义路径。
type string 此事件源的一个注册事件类型。
time string 基于提供程序 UTC 时间的事件生成时间。
id string 事件的唯一标识符。
data 对象 应用配置事件数据。
specversion 字符串 CloudEvents 架构规范版本。

数据对象具有以下属性:

键值事件

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

快照事件

properties 类型​​ 说明
name string 已创建或修改的快照的名称。
etag string 对于 SnapshotCreated,为新快照的 etag。 对于 SnapshotModified,为已修改的快照的 etag。
syncToken string 表示快照事件后服务器状态的同步令牌。

示例事件

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

[{
  "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 字段了解有关对象的信息是否仍是最新的。
  • 使用 sequencer 字段以了解任意特定对象上事件的顺序。
  • 使用 subject 字段以访问修改后的键值。

后续步骤

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