Compartilhar via


Reagindo a eventos de Configuração de Aplicativo do Azure

Os eventos de Configuração de Aplicativo do Azure permitem que os aplicativos reajam às alterações nos valores-chave. Isso é feito sem a necessidade de código complicado ou serviços de sondagem caros e ineficientes. Em vez disso, os eventos são enviados por push por meio da Grade de Eventos do Azure para assinantes, como o Azure Functions, os Aplicativos Lógicos do Azure ou até mesmo para seu próprio ouvinte HTTP personalizado. Criticamente, você paga apenas pelo que usa.

Os eventos de Configuração de Aplicativo do Azure são enviados para a Grade de Eventos do Azure, que fornece serviços de entrega confiáveis para seus aplicativos por meio de políticas avançadas de repetição 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 evento de Configuração de Aplicativo incluem atualizar a configuração do aplicativo, disparar implantações ou qualquer fluxo de trabalho orientado à configuração. Quando as alterações são pouco frequentes, mas seu cenário requer capacidade de resposta imediata, a arquitetura baseada em eventos pode ser especialmente eficiente.

Dê uma olhada em Usar a Grade de Eventos para notificações de alteração de dados para obter um exemplo rápido.

Diagrama que mostra o Modelo de Grade de Eventos.

Tipos de evento disponíveis

A Grade de Eventos usa assinaturas de evento para rotear mensagens de evento para assinantes. A Configuração de Aplicativo do Azure emite os seguintes tipos de evento:

Tipo de evento Description
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 de eventos

Um evento tem os seguintes dados de nível superior:

Propriedade Tipo Description
source cadeia Caminho completo do recurso para a origem do evento. Este campo não é gravável. A Grade de Eventos fornece esse valor.
subject cadeia Caminho definido pelo publicador para o assunto do evento.
type cadeia Um dos tipos de evento registrados para essa fonte de evento.
time cadeia A hora em que o evento é gerado com base na hora UTC do provedor.
id cadeia Identificador exclusivo para o evento.
data objeto Dados de evento da Configuração do Aplicativo.
specversion cadeia Versão de especificação de esquema do CloudEvents.

O objeto de dados tem as seguintes propriedades:

Evento chave-valor

Propriedade Tipo Description
key cadeia A chave do valor-chave que foi modificado ou excluído.
label cadeia O rótulo, se houver, do valor-chave que foi modificado ou excluído.
etag cadeia Para KeyValueModified a etag do novo valor-chave. Para KeyValueDeleted a etag do valor-chave que foi excluído.
syncToken cadeia O token de sincronização que representa o estado do servidor após o evento chave-valor.

Evento de instantâneo

Propriedade Tipo Description
name cadeia O nome do instantâneo que foi criado ou modificado.
etag cadeia Para SnapshotCreated a etag do novo instantâneo. Para SnapshotModified a etag do instantâneo que foi modificado.
syncToken cadeia O token de sincronização que representa o estado do servidor após o evento de instantâneo.

Evento de exemplo

O exemplo a seguir mostra o esquema de um evento modificado de chave-valor:

[{
  "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 excluído de chave-valor:

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

O exemplo a seguir mostra o esquema de um evento criado por 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 modificado 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, consulte o esquema de eventos da Configuração de Aplicativo do Azure.

Práticas para consumir eventos

Os aplicativos que lidam com eventos de Configuração de Aplicativo devem seguir estas práticas recomendadas:

  • Várias assinaturas podem ser configuradas para rotear eventos para o mesmo manipulador de eventos, portanto, não suponha que os eventos sejam de uma fonte específica. Em vez disso, verifique o tópico da mensagem para garantir que a instância de Configuração de Aplicativo esteja enviando o evento.
  • Verifique e eventTypenão suponha que todos os eventos recebidos serão os tipos esperados.
  • Use os etag campos para entender se suas informações sobre objetos ainda estão up-to-date.
  • Use os campos do sequenciador para entender a ordem dos eventos em qualquer objeto específico.
  • Use o campo de assunto para acessar a chave-valor que foi modificada.

Próximas etapas

Para saber mais sobre a Grade de Eventos e experimentar os eventos da Configuração de Aplicativos do Azure, confira: