Reagir a eventos de Configuração de Aplicativos do Azure
Os eventos de Configuração de Aplicativos do Azure permitem que os aplicativos reajam a alterações nos valores-chave. Isso é feito sem a necessidade de código complicado ou serviços de sondagem caros e ineficientes. Nesse caso, os eventos são enviados por push pela Grade de Eventos do Azure a assinantes como o Azure Functions, os Aplicativos Lógicos do Azure ou mesmo ao próprio ouvinte HTTP personalizado. Você paga apenas pelo que usa.
Os eventos de Configuração de Aplicativos do Azure são enviados para a Grade de Eventos do Azure, que fornece serviços de entrega confiáveis para os aplicativos por meio de políticas de repetição avançadas e entrega de mensagens mortas. Para saber mais, confira Event Grid message delivery and retry (Entrega e repetição de mensagens da Grade de Eventos).
Os cenários comuns de eventos de Configuração de Aplicativos incluem atualizar a configuração do aplicativo, disparar implantações ou qualquer fluxo de trabalho orientado por configuração. Quando as alterações não forem frequentes, mas seu cenário exigir uma capacidade de resposta imediata, a arquitetura baseada em eventos pode ser especialmente eficaz.
Dê uma olhada em Usar a Grade de Eventos para notificações de alterações de dados para um exemplo rápido.
Tipos de evento disponíveis
A Grade de eventos usa assinaturas de evento para rotear mensagens de evento para os assinantes. A Configuração de Aplicativos do Azure emite os tipos de evento a seguir:
Tipo de evento | Descrição |
---|---|
Microsoft.AppConfiguration.KeyValueModified | Gerado quando um valor-chave é criado ou substituído. |
Microsoft.AppConfiguration.KeyValueDeleted | Gerado quando um valor-chave é excluído. |
Microsoft.AppConfiguration.SnapshotCreated | Gerado quando um instantâneo é criado. |
Microsoft.AppConfiguration.SnapshotModified | Gerado quando um instantâneo é modificado. |
Esquema do evento
Um evento tem os seguintes dados de nível superior:
Propriedade | Type | Descrição |
---|---|---|
source |
string | Caminho de recurso completo para a origem do evento. Este campo não é gravável. A Grade de Eventos fornece esse valor. |
subject |
string | Caminho definido pelo publicador para o assunto do evento. |
type |
string | Um dos tipos de evento registrados para a origem do evento. |
time |
string | A hora em que o evento é gerado com base na hora UTC do provedor. |
id |
string | Identificador exclusivo do evento. |
data |
objeto | Dados de evento da Configuração de Aplicativos. |
specversion |
string | Versão de especificação do esquema CloudEvents. |
O objeto de dados tem as seguintes propriedades:
Evento chave-valor
Propriedade | Type | Descrição |
---|---|---|
key |
string | A chave do valor-chave que foi modificado ou excluído. |
label |
string | A etiqueta, se houver, do valor-chave que foi modificado ou excluído. |
etag |
string | Para KeyValueModified , a etag do novo valor-chave. Para KeyValueDeleted a etag do valor-chave que foi excluído. |
syncToken |
string | O token de sincronização que representa o estado do servidor após o evento chave-valor. |
Evento de instantâneo
Propriedade | Type | Descrição |
---|---|---|
name |
string | O nome do instantâneo que foi criado ou modificado. |
etag |
string | Para SnapshotCreated , a etag do novo instantâneo. Para SnapshotModified , a etag do instantâneo que foi modificado. |
syncToken |
string | O token de sincronização que representa o estado do servidor após o evento de instantâneo. |
Exemplo de evento
O exemplo a seguir mostra o esquema de um evento de modificação de valor-chave:
[{
"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"
}]
O exemplo a seguir mostra o esquema de um evento de exclusão de valor-chave:
[{
"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"
}]
Veja no exemplo a seguir o esquema de um evento de criação de instantâneo:
[{
"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"
}]
O exemplo a seguir mostra o esquema de um evento de modificação de instantâneo:
[{
"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"
}]
Para obter mais informações, veja Esquema de eventos de Configuração de Aplicativos do Azure.
Práticas para consumo de eventos
Os aplicativos que lidam com os eventos de Configuração de Aplicativos devem seguir estas práticas recomendadas:
- Várias assinaturas podem ser configuradas para rotear eventos para o mesmo manipulador de eventos, portanto, não presuma que os eventos são de uma origem específica. Nesse caso, verifique o tópico da mensagem para garantir que a instância da Configuração de Aplicativos envie o evento.
- Marque
eventType
e não presuma que todos os eventos que você recebe são os tipos que espera. - Use os campos
etag
para entender se as informações sobre objetos estão atualizadas. - Use os campos do sequenciador para entender a ordem de eventos em qualquer objeto específico.
- Use o campo de assunto para acessar o valor-chave que foi modificado.
Próximas etapas
Para saber mais sobre a Grade de Eventos e experimentar os eventos de Configuração de Aplicativos do Azure, confira: