Condividi tramite


Esercitazione: Abilitare il refresh della configurazione dinamica in un'applicazione console Go

In questa guida introduttiva si migliorerà un'applicazione console Go di base per aggiornare dinamicamente la configurazione da Configurazione app di Azure. Ciò consente all'applicazione di selezionare le modifiche di configurazione senza richiedere un riavvio.

Prerequisiti

Ricarica i dati dalla configurazione dell'applicazione

  1. Aprire il file appconfig.go. All'interno della funzione loadAzureAppConfiguration, aggiornare options per abilitare l'aggiornamento. Il provider Go ricarica l'intera configurazione ogni volta che rileva una modifica in uno dei valori chiave selezionati (quelli che iniziano con Config e non hanno etichetta). Per altre informazioni sul monitoraggio delle modifiche alla configurazione, vedere Procedure consigliate per l'aggiornamento della configurazione.

    options := &azureappconfiguration.Options{
        Selectors: []azureappconfiguration.Selector{
            {
                KeyFilter: "Config.*",
            },
        },
        TrimKeyPrefixes: []string{"Config."},
        RefreshOptions: azureappconfiguration.KeyValueRefreshOptions{
            Enabled:  true,
        },
    }
    

    Suggerimento

    È possibile impostare la proprietà Interval di RefreshOptions per specificare il tempo minimo tra gli aggiornamenti della configurazione. In questo esempio si usa il valore predefinito di 30 secondi. Impostare un valore superiore se è necessario ridurre il numero di richieste effettuate nell'archivio di Configurazione app.

  2. Aprire il file main.go e aggiungere il codice seguente alla funzione principale:

    // Existing code in main.go
    // ... ...
     fmt.Println("\nRaw JSON Configuration:")
     fmt.Println("------------------------")
     fmt.Println(string(jsonBytes))
    
    // Register refresh callback to update the configuration
     provider.OnRefreshSuccess(func() {
     	var updatedConfig Config
     	// Re-unmarshal the configuration
     	err := provider.Unmarshal(&updatedConfig, nil)
     	if err != nil {
     		log.Printf("Error unmarshalling updated configuration: %s", err)
     		return
     	}
    
     	fmt.Printf("Message: %s\n", updatedConfig.Message)
     })
    
    // 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
        }
    }
    

Eseguire l'applicazione

  1. Eseguire l'applicazione:

     go mod tidy
     go run .
    
  2. Mantenere l'applicazione in esecuzione.

  3. Passare all'archivio di configurazione dell'app e aggiornare il valore della chiave Config.Message.

    Chiave Valore Tipo di contenuto
    Config.Message Hello World - aggiornato! Lasciare vuoto
  4. Osservare l'applicazione console: entro 30 secondi, dovrebbe rilevare la modifica e visualizzare la configurazione aggiornata.

Pulire le risorse

Se non si vuole continuare a usare le risorse create in questo articolo, eliminare il gruppo di risorse creato qui per evitare addebiti.

Importante

L'eliminazione di un gruppo di risorse è irreversibile. Il gruppo di risorse e tutte le risorse in esso contenute vengono eliminati in modo permanente. Assicurarsi di non eliminare accidentalmente il gruppo di risorse o le risorse sbagliate. Se le risorse per questo articolo sono state create in un gruppo di risorse che contiene altre risorse che si vogliono mantenere, eliminare ogni risorsa singolarmente dal rispettivo riquadro anziché eliminare il gruppo di risorse.

  1. Accedere al portale di Azure e selezionare Gruppi di risorse.
  2. Nella casella Filtra per nome immettere il nome del gruppo di risorse.
  3. Nell'elenco dei risultati selezionare il nome del gruppo di risorse per visualizzare una panoramica.
  4. Selezionare Elimina gruppo di risorse.
  5. Verrà chiesto di confermare l'eliminazione del gruppo di risorse. Immettere il nome del gruppo di risorse per confermare e selezionare Elimina.

Dopo qualche istante, il gruppo di risorse e tutte le risorse che contiene vengono eliminati.