Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este tutorial mostra como você pode implementar atualizações de configuração dinâmica em um aplicativo Web Gin usando a Configuração de Aplicativo do Azure. Ele baseia-se na aplicação web introduzida no quickstart anterior.
Pré-requisitos
Conclusão do início rápido: Criar uma aplicação web Gin com a Configuração de Aplicação do Azure
Recarregar dados da Configuração do Aplicativo
Abra o ficheiro
appconfig.go
. Dentro da funçãoloadAzureAppConfiguration
, atualizeoptions
para ativar a atualização. O provedor Go recarregará toda a configuração sempre que detetar uma alteração em qualquer um dos valores-chave selecionados. Para obter mais informações sobre como monitorar alterações de configuração, consulte Práticas recomendadas para atualização de configuração.options := &azureappconfiguration.Options{ Selectors: []azureappconfiguration.Selector{ { KeyFilter: "Config.*", }, }, TrimKeyPrefixes: []string{"Config."}, RefreshOptions: azureappconfiguration.KeyValueRefreshOptions{ Enabled: true, }, }
Sugestão
Você pode definir a propriedade
Interval
doRefreshOptions
para especificar o tempo mínimo entre as atualizações de configuração. Neste exemplo, você usa o valor padrão de 30 segundos. Ajuste para um valor mais alto se precisar reduzir o número de solicitações feitas à sua App Configuration Store.Atualize o seu arquivo
main.go
para registar uma função de callback para atualizações de configuração:// Existing code // ... ... var config Config if err := provider.Unmarshal(&config, nil); err != nil { log.Fatalf("Failed to unmarshal configuration: %v", err) } // Register refresh callback provider.OnRefreshSuccess(func() { // Re-unmarshal the configuration err := provider.Unmarshal(&config, nil) if err != nil { log.Printf("Failed to unmarshal updated configuration: %s", err) return } })
Adicione um middleware de atualização de configuração. Atualize
main.go
com o código a seguir.func configRefreshMiddleware(provider *azureappconfiguration.AzureAppConfiguration) gin.HandlerFunc { return func(c *gin.Context) { // Start refresh in a goroutine to avoid blocking the request go func() { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() if err := provider.Refresh(ctx); err != nil { log.Printf("Error refreshing configuration: %s", err) } }() c.Next() } }
Use o middleware de atualização de configuração:
// Existing code // ... ... router := gin.Default() // Use the configuration refresh middleware router.Use(configRefreshMiddleware(provider)) // The rest of existing code //... ...
Atualização de configuração orientada por solicitação
A atualização da configuração é acionada pelas solicitações de entrada para seu aplicativo Web. Nenhuma atualização ocorrerá se seu aplicativo estiver ocioso. Quando seu aplicativo está ativo, o middleware de atualização de configuração monitora os valores-chave selecionados que você configurou no azureappconfiguration.Options
. O middleware é acionado a cada solicitação de entrada no seu aplicativo. No entanto, o middleware só enviará solicitações para verificar o valor na Configuração do Aplicativo quando o intervalo de atualização definido tiver passado.
- Se uma solicitação à Configuração do Aplicativo para deteção de alterações falhar, seu aplicativo continuará a usar a configuração em cache. Novas tentativas de verificar alterações serão feitas periodicamente enquanto houver novas solicitações de entrada para seu aplicativo.
- A atualização de configuração acontece de forma assíncrona para o processamento das solicitações de entrada do seu aplicativo. Ele não bloqueará ou retardará a solicitação de entrada que disparou a atualização. A solicitação que disparou a atualização pode não obter os valores de configuração atualizados, mas as solicitações posteriores obterão novos valores de configuração.
- Para garantir que o middleware seja acionado, use o middleware de atualização de configuração o mais cedo possível no pipeline de solicitações para que outro middleware não o ignore em seu aplicativo.
Execute a aplicação Web
Agora que você configurou a atualização da configuração dinâmica, vamos testá-la para vê-la em ação.
Execute o aplicativo.
go run main.go
Abra um navegador da Web e navegue até
http://localhost:8080
para acessar o seu aplicativo. A página Web tem o seguinte aspeto:Navegue até à sua loja de configuração de aplicativos e atualize o valor da chave
Config.Message
.Chave Valor Tipo de conteúdo Config.Message Olá da Configuração de Aplicações do Azure - agora com atualizações em tempo real! Deixar em branco Depois de atualizar o navegador algumas vezes, você verá o conteúdo atualizado assim que o ConfigMap for atualizado em 30 segundos.
Limpeza de recursos
Se não quiser continuar a utilizar os recursos criados neste artigo, elimine o grupo de recursos que criou aqui para evitar cobranças.
Importante
A eliminação de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos nele contidos são excluídos permanentemente. Certifique-se de não excluir acidentalmente o grupo de recursos ou recursos errados. Se você criou os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que deseja manter, exclua cada recurso individualmente de seu respetivo painel em vez de excluir o grupo de recursos.
- Entre no portal do Azure e selecione Grupos de recursos.
- Na caixa Filtrar por nome, introduza o nome do seu grupo de recursos.
- Na lista de resultados, selecione o nome do grupo de recursos para ver uma visão geral.
- Selecione Eliminar grupo de recursos.
- É-lhe pedido que confirme a eliminação do grupo de recursos. Insira o nome do grupo de recursos a ser confirmado e selecione Excluir.
Após alguns momentos, o grupo de recursos e todos os seus recursos são excluídos.