Azure 應用程式設定事件可讓應用程式對索引鍵/值的變更做出反應。 這是無需複雜的程式碼或昂貴且低效的輪詢服務即可完成的。 相反地,事件會透過 Azure 事件方格 推送至訂閱者,例如 Azure Functions、 Azure Logic Apps,甚至推送至您自己的自訂 HTTP 接聽程式。 至關重要的是,您只需為使用的內容付費。
Azure 應用程式設定事件會傳送至 Azure 事件方格,其透過豐富的重試原則和無法傳送的信件傳遞,為您的應用程式提供可靠的傳遞服務。 如需詳細資訊,請參閱 Event Grid 訊息傳遞與重試。
常見的應用程式設定事件案例包括重新整理應用程式設定、觸發部署或任何設定導向工作流程。 當變更不頻繁,但您的案例需要立即回應時,事件型架構可能特別有效率。
請參閱使用 事件方格進行資料變更通知 ,以取得快速範例。
可用的事件類型
事件方格會使用 事件訂用帳戶 ,將事件訊息路由傳送至訂閱者。 Azure 應用程式設定會發出下列事件類型:
| 事件類型 | Description |
|---|---|
| Microsoft.AppConfiguration.KeyValueModified | 建立或取代索引鍵值時引發。 |
| Microsoft.AppConfiguration.KeyValue已刪除 | 刪除索引鍵值時引發。 |
| Microsoft.AppConfiguration.Snapshot已建立 | 建立快照集時引發。 |
| 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 應用程式設定事件架構。
取用事件的做法
處理應用程式設定事件的應用程式應遵循下列建議做法:
- 您可以設定多個訂用帳戶,將事件路由傳送至相同的事件處理常式,因此請勿假設事件來自特定來源。 相反地,請檢查訊息的主題,以確保 App Configuration 執行個體正在傳送事件。
- 檢查
eventType,不要假設您收到的所有事件都是您預期的類型。 - 使用欄位
etag來瞭解物件的相關資訊是否仍 up-to日期。 - 使用排序器欄位來瞭解任何特定物件上的事件順序。
- 使用主旨欄位來存取已修改的索引鍵/值。
後續步驟
若要深入瞭解事件方格,並嘗試 Azure 應用程式設定事件,請參閱: