Compartilhar via


Tutorial: Habilitar a atualização de configuração dinâmica em um aplicativo de console Go

Neste início rápido, você aprimora um aplicativo de console Go básico para atualizar dinamicamente a configuração da Configuração de Aplicativos do Azure. Isso permite que seu aplicativo escolha as alterações de configuração sem a necessidade de uma reinicialização.

Pré-requisitos

Recarregar os dados da Configuração de Aplicativo

  1. Abra o arquivo appconfig.go. Dentro da função loadAzureAppConfiguration, atualize o options 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 (aqueles que começam com Config e não têm rótulo). 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 do RefreshOptions 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.

  2. Abra o arquivo unmarshal_sample.go e adicione o seguinte código à sua função principal:

    // Existing code in unmarshal_sample.go
    // ... ...
    fmt.Printf("Timeout: %d seconds\n", config.App.Settings.Timeout)
    fmt.Printf("Retry Count: %d\n", config.App.Settings.RetryCount)
    
    // Register refresh callback to update and display the configuration
    provider.OnRefreshSuccess(func() {
        // Re-unmarshal the configuration
        err := appCfgProvider.Unmarshal(&updatedConfig, nil)
        if err != nil {
            log.Printf("Error unmarshalling updated configuration: %s", err)
            return
        }
    
        // Display the updated configuration
        displayConfig(config)
    })
    
    // Setup a channel to listen for termination signals
    done := make(chan os.Signal, 1)
    signal.Notify(done, syscall.SIGINT, syscall.SIGTERM)
    
    fmt.Println("\nWaiting for configuration changes...")
    fmt.Println("(Update values in Azure App Configuration to see refresh in action)")
    fmt.Println("Press Ctrl+C to exit")
    
    // Start a ticker to periodically trigger refresh
    ticker := time.NewTicker(30 * time.Second)
    defer ticker.Stop()
    
    // Keep the application running until terminated
    for {
        select {
        case <-ticker.C:
            // Trigger refresh in background
            go func() {
                ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
                defer cancel()
    
                if err := provider.Refresh(ctx); err != nil {
                    log.Printf("Error refreshing configuration: %s", err)
                }
            }()
        case <-done:
            fmt.Println("\nExiting...")
            return
        }
    }
    

Executar o aplicativo

  1. Execute seu aplicativo:

    go run unmarshal_sample.go
    
  2. Mantenha o aplicativo em execução.

  3. 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á, Mundo – atualizado! Deixe o campo vazio
  4. Observe seu aplicativo de console – dentro de 30 segundos, ele deve detectar a alteração e exibir a configuração atualizada.

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.

  1. Entre no portal do Azure e selecione Grupos de recursos.
  2. Na caixa Filtrar por nome..., digite o nome do seu grupo de recursos.
  3. Na lista de resultados, selecione o nome do grupo de recursos para conferir uma visão geral.
  4. Selecione Excluir grupo de recursos.
  5. 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.