Dela via


Självstudie: Aktivera dynamisk konfigurationsuppdatering i en Go-konsolapp

I den här snabbstarten förbättrar du ett grundläggande Go-konsolprogram för att dynamiskt uppdatera konfigurationen från Azure App Configuration. På så sätt kan ditt program hämta konfigurationsändringar utan att behöva starta om.

Förutsättningar

Läsa in data på nytt från App Configuration

  1. Öppna appconfig.go-filen. I funktionen loadAzureAppConfiguration uppdaterar du options för att aktivera uppdatering. Go-providern läser in hela konfigurationen igen när den identifierar en ändring i något av de valda nyckelvärdena (de som börjar med Config. och som inte har någon etikett). Mer information om hur du övervakar konfigurationsändringar finns i Metodtips för konfigurationsuppdatering.

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

    Tips/Råd

    Du kan ange Interval egenskapen för RefreshOptions för att ange den minsta tiden mellan konfigurationsuppdateringarna. I det här exemplet använder du standardvärdet 30 sekunder. Justera till ett högre värde om du behöver minska antalet begäranden som görs till appkonfigurationsarkivet.

  2. Öppna filen main.go och lägg till följande kod i huvudfunktionen:

    // 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
        }
    }
    

Starta programmet

  1. Kör ditt program:

     go mod tidy
     go run .
    
  2. Håll programmet igång.

  3. Gå till appkonfigurationsarkivet och uppdatera värdet för Config.Message nyckeln.

    Nyckel Värde Innehållstyp
    Config.Message Hello World - uppdaterad! Lämna tom
  4. Observera konsolprogrammet – inom 30 sekunder bör det identifiera ändringen och visa den uppdaterade konfigurationen.

Rensa resurser

Om du inte vill fortsätta använda resurserna som skapas i den här artikeln tar du bort resursgruppen som du skapade här för att undvika avgifter.

Viktigt!

Att ta bort en resursgrupp kan inte ångras. Resursgruppen och alla resurser i den tas bort permanent. Se till att du inte oavsiktligt tar bort fel resursgrupp eller resurser. Om du har skapat resurserna för den här artikeln i en resursgrupp som innehåller andra resurser som du vill behålla tar du bort varje resurs individuellt från respektive fönster i stället för att ta bort resursgruppen.

  1. Logga in på Azure Portal och välj Resursgrupper.
  2. I rutan Filtrera efter namn anger du namnet på resursgruppen.
  3. I resultatlistan väljer du resursgruppens namn för att se en översikt.
  4. Välj Ta bort resursgrupp.
  5. Du blir ombedd att bekräfta borttagningen av resursgruppen. Ange namnet på resursgruppen för att bekräfta och välj Ta bort.

Efter en liten stund tas resursgruppen och alla dess resurser bort.