回應 Azure 應用程式組態事件
Azure 應用程式組態事件讓應用程式可以回應機碼值中的變更。 其不需要複雜的程式碼或昂貴且效率不佳的輪詢服務即可完成。 反之,事件會透過 Azure 事件方格推送給訂閱者,例如 Azure Functions、Azure Logic Apps,甚至推送至您自己的自訂 HTTP 接聽程式。 更重要的是,您只需按使用量付費。
Azure 應用程式組態可以傳送至 Azure Event Grid,透過豐富的重試原則和無效傳遞,提供應用程式可靠的傳遞服務。 如需詳細資訊,請參閱 Event Grid 訊息傳遞與重試。
常見的應用程式組態事件案例包含重新整理應用程式組態、觸發部署或任何組態導向的工作流程。 在變更不常見但情況需要立即回應的情況下,以事件為基礎的架構可能特別有效。
如需快速範例,請查看使用 Event Grid 取得資料變更通知。
可用的事件類型
事件方格會使用事件訂閱路由傳送事件訊息至訂閱者。 Azure 應用程式組態會發出下列事件類型:
事件類型 | 描述 |
---|---|
Microsoft.AppConfiguration.KeyValueModified | 建立或取代機碼值時引發。 |
Microsoft.AppConfiguration.KeyValueDeleted | 刪除機碼值時引發。 |
Microsoft.AppConfiguration.SnapshotCreated | 建立快照集時引發。 |
Microsoft.AppConfiguration.SnapshotModified | 修改快照集時引發。 |
結構描述
事件具有下列的最高層級資料:
屬性 | 類型 | 描述 |
---|---|---|
topic |
string | 事件來源的完整資源路徑。 此欄位無法寫入。 事件方格提供此值。 |
subject |
string | 發行者定義事件主旨的路徑。 |
eventType |
string | 此事件來源已註冊的事件類型之一。 |
eventTime |
string | 事件產生的時間,以提供者的 UTC 時間為準。 |
id |
string | 事件的唯一識別碼。 |
data |
object | 應用程式組態事件資料。 |
dataVersion |
string | 資料物件的結構描述版本。 發行者會定義結構描述版本。 |
metadataVersion |
string | 事件中繼資料的結構描述版本。 「事件方格」會定義最上層屬性的結構描述。 事件方格提供此值。 |
資料物件具有下列屬性:
機碼值事件
屬性 | 類型 | 描述 |
---|---|---|
key |
string | 已修改或刪除的機碼值索引鍵。 |
label |
string | 已修改或刪除的機碼值標籤,如果有的話。 |
etag |
string | 針對新機碼值的 KeyValueModified 實體標記。 針對已刪除的機碼值 KeyValueDeleted 實體標記。 |
syncToken |
string | 表示機碼值事件之後伺服器狀態的同步權杖。 |
快照集事件
屬性 | 類型 | 描述 |
---|---|---|
name |
string | 已建立或經修改之快照集的名稱。 |
etag |
string | 針對 SnapshotCreated ,新快照集的 etag。 針對 SnapshotModified ,已修改之快照集的 etag。 |
syncToken |
string | 表示快照集事件之後伺服器狀態的同步權杖。 |
事件範例
下列範例顯示機碼值修改事件的結構描述:
[{
"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"
}]
下列範例顯示已刪除機碼值事件的結構描述:
[{
"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.KeyValueDeleted",
"eventTime": "2019-05-31T20:05:03Z",
"dataVersion": "1",
"metadataVersion": "1"
}]
下列範例說明已建立快照集事件的結構描述:
[{
"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/snapshots/Foo",
"data": {
"Name": "Foo",
"etag": "FnUExLaj2moIi4tJX9AXn9sakm0",
"syncToken": "zAJw6V16=Njo1IzUxNjQ2NzM=;sn=5164673"
},
"eventType": "Microsoft.AppConfiguration.SnapshotCreated",
"eventTime": "2023-09-02T20:05:03Z",
"dataVersion": "1",
"metadataVersion": "1"
}]
下列範例顯示已修改快照集事件的結構描述:
[{
"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/snapshots/Foo",
"data": {
"name": "Foo",
"label": "FizzBuzz",
"etag": "FnUExLaj2moIi4tJX9AXn9sakm0",
"syncToken": "zAJw6V16=Njo1IzUxNjQ2NzM=;sn=5164673"
},
"eventType": "Microsoft.AppConfiguration.SnapshotModified",
"eventTime": "2023-09-03T20:05:03Z",
"dataVersion": "1",
"metadataVersion": "1"
}]
如需詳細資訊,請參閱 Azure 應用程式組態事件結構描述。
消費事件做法
處理應用程式組態事件的應用程式應遵循下列建議做法:
- 為了路由傳送事件至相同的事件處理常式,您可以設定多個訂閱,所以請勿假設事件來自特定來源。 請改為檢查訊息的主題,以確保應用程式組態執行個體正在傳送事件。
- 請檢查
eventType
,並請勿假設您收到的所有事件都是您預期的類型。 - 請使用
etag
欄位,以了解您的物件資訊是否仍是最新的。 - 使用排序器欄位了解任何特定物件上的事件順序。
- 使用主旨欄位存取已修改的機碼值。
下一步
若要深入了解事件方格,並嘗試使用 Azure 應用程式組態事件,請參閱: