Udostępnij za pośrednictwem


Samouczek: włączanie dynamicznego odświeżania konfiguracji w aplikacji konsolowej języka Go

W tym wprowadzeniu szybko ulepszysz podstawową aplikację konsolową w języku Go, aby dynamicznie odświeżać konfigurację z Azure App Configuration. Dzięki temu aplikacja może pobierać zmiany konfiguracji bez konieczności ponownego uruchamiania.

Wymagania wstępne

Ponowne ładowanie danych z usługi App Configuration

  1. Otwórz plik appconfig.go. Wewnątrz funkcji loadAzureAppConfiguration, zaktualizuj options, aby włączyć odświeżanie. Dostawca Go ponownie załaduje całą konfigurację za każdym razem, gdy wykryje zmianę w którejkolwiek z wybranych wartości kluczowych (tych rozpoczynających się od Config. i nieposiadających etykiety). Aby uzyskać więcej informacji na temat monitorowania zmian konfiguracji, zobacz Najlepsze rozwiązania dotyczące odświeżania konfiguracji.

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

    Wskazówka

    Można ustawić właściwość Interval elementu RefreshOptions, aby określić minimalny czas między odświeżeniami konfiguracji. W tym przykładzie użyjesz wartości domyślnej 30 sekund. Dostosuj do wyższej wartości, jeśli musisz zmniejszyć liczbę żądań wysyłanych do magazynu usługi App Configuration.

  2. Otwórz plik unmarshal_sample.go i dodaj następujący kod do funkcji main:

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

Uruchamianie aplikacji

  1. Uruchom aplikację:

    go run unmarshal_sample.go
    
  2. Zachowaj działanie aplikacji.

  3. Przejdź do swojego sklepu App Configuration i zaktualizuj wartość klucza Config.Message.

    Klawisz Wartość Typ zawartości
    Config.Message Witaj, świecie — zaktualizowano! Pozostaw pole puste
  4. Obserwuj aplikację konsolową — w ciągu 30 sekund powinna wykryć zmianę i wyświetlić zaktualizowaną konfigurację.

Uprzątnij zasoby

Jeśli nie chcesz nadal korzystać z zasobów utworzonych w tym artykule, usuń utworzoną tutaj grupę zasobów, aby uniknąć naliczania opłat.

Ważne

Usunięcie grupy zasobów jest nieodwracalne. Grupa zasobów i wszystkie zasoby w niej są trwale usuwane. Upewnij się, że nie usuniesz przypadkowo niewłaściwej grupy zasobów lub zasobów. Jeśli zasoby dla tego artykułu zostały utworzone w grupie zasobów zawierającej inne zasoby, które chcesz zachować, usuń każdy zasób oddzielnie z odpowiedniego okienka zamiast usuwać grupę zasobów.

  1. Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
  2. W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
  3. Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
  4. Wybierz pozycję Usuń grupę zasobów.
  5. Poproszono Cię o potwierdzenie usunięcia grupy zasobów. Wprowadź nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.

Po kilku chwilach grupa zasobów i wszystkie jej zasoby zostaną usunięte.