Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tutorial mostra como você pode implementar atualizações de configuração dinâmicas em um aplicativo Web Gin usando a Configuração de Aplicativos do Azure. Ele se baseia no aplicativo Web apresentado no início rápido anterior.
Pré-requisitos
Concluir o início rápido: Criar um aplicativo Web Gin com a Configuração de Aplicativo do Azure
Recarregar os dados da Configuração de Aplicativo
Abra o arquivo
appconfig.go
. Dentro da funçãoloadAzureAppConfiguration
, atualize ooptions
para habilitar a atualização. O provedor Go recarregará toda a configuração sempre que detectar uma alteração em qualquer um dos valores de chave selecionados. Para obter mais informações sobre como monitorar alterações de configuração, consulte As 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, }, }
Dica
Você pode definir a
Interval
propriedade 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 você precisar reduzir o número de solicitações feitas ao repositório de Configuração de Aplicativos.Atualize seu arquivo
main.go
para registrar uma função de retorno de chamada 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 seguinte código.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 controlada por solicitação
A atualização de configuração é disparada pelas solicitações de entrada ao aplicativo Web. Nenhuma atualização ocorrerá se o aplicativo estiver ocioso. Quando o aplicativo estiver ativo, o middleware de atualização de configuração monitorará os pares chave-valor selecionados que você configurou em azureappconfiguration.Options
. O middleware é acionado a cada solicitação de entrada para o 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 de Aplicativos para detecção de alterações falhar, o aplicativo continuará a usar a configuração armazenada em cache. Novas tentativas de verificar se há alterações serão feitas periodicamente enquanto houver novas solicitações de entrada no aplicativo.
- A atualização de configuração ocorre de forma assíncrona para o processamento das solicitações de entrada do aplicativo. Ela não bloqueará nem reduzirá a velocidade da solicitação de entrada que disparou a atualização. Talvez a solicitação que disparou a atualização não receba os valores de configuração atualizados, mas solicitações posteriores receberã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ção, para que outro middleware não o ignore em seu aplicativo.
Executar o aplicativo Web
Agora que você configurou a atualização de 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 acesse
http://localhost:8080
para acessar seu aplicativo. A página da Web tem esta aparência:Navegue até o repositório de Configuração de Aplicativos e atualize o valor da
Config.Message
chave.Chave Valor Tipo de conteúdo Config.Message Olá da Configuração de Aplicativos do Azure – agora com atualizações ao vivo! Deixe o campo vazio Depois de atualizar o navegador algumas vezes, você verá o conteúdo atualizado depois que o ConfigMap for atualizado em 30 segundos.
Limpar os recursos
Se não deseja continuar usando os recursos criados neste artigo, exclua o grupo de recursos que você criou aqui para evitar encargos.
Importante
A exclusão de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos contidos nele são excluídos permanentemente. Certifique-se de não excluir o grupo de recursos ou os recursos incorretos acidentalmente. Se tiver criado os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que você deseja manter, exclua cada um individualmente do respectivo painel em vez de excluir o grupo de recursos.
- Entre no portal do Azure e selecione Grupos de recursos.
- Na caixa Filtrar por nome..., digite o nome do seu grupo de recursos.
- Na lista de resultados, selecione o nome do grupo de recursos para conferir uma visão geral.
- Selecione Excluir grupo de recursos.
- Você receberá uma solicitação para confirmar a exclusão do grupo de recursos. Insira o nome do grupo de recursos para confirmar e selecione Excluir.
Após alguns instantes, o grupo de recursos e todos os recursos dele são excluídos.