Megosztás a következőn keresztül:


Oktatóanyag: Dinamikus konfigurációfrissítés engedélyezése Go-konzolalkalmazásban

Ebben a rövid útmutatóban egy alapszintű Go-konzolalkalmazást fejleszt, amely dinamikusan frissíti a konfigurációt az Azure App Configurationból. Ez lehetővé teszi, hogy az alkalmazás újraindítás nélkül vegye át a konfigurációs módosításokat.

Előfeltételek

Adatok újrabetöltése az alkalmazáskonfigurációból

  1. Nyissa meg a fájlt appconfig.go. A loadAzureAppConfiguration függvényen belül módosítsa a options-t a frissítés engedélyezéséhez. A Go-szolgáltató újra betölti a teljes konfigurációt, amikor a kiválasztott kulcsértékek bármelyikében változást észlel (a konfigurációval kezdődő és címkével nem rendelkezőkben). A konfigurációváltozások figyelésével kapcsolatos további információkért tekintse meg a konfigurációfrissítés ajánlott eljárásait.

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

    Jótanács

    A Interval tulajdonságot beállíthatja RefreshOptions-en, hogy meghatározza a konfigurációfrissítések közötti minimális időt. Ebben a példában az alapértelmezett 30 másodperces értéket használja. Ha csökkenteni szeretné az Alkalmazáskonfigurációs áruházba érkező kérések számát, módosítsa magasabb értékre.

  2. Nyissa meg a fájlt unmarshal_sample.go , és adja hozzá a következő kódot a fő függvényhez:

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

Az alkalmazás futtatása

  1. Futtassa az alkalmazást:

    go run unmarshal_sample.go
    
  2. Tartsa az alkalmazást futva.

  3. Lépjen az Alkalmazáskonfigurációs áruházba, és frissítse a Config.Message kulcs értékét.

    Kulcs Érték Tartalomtípus
    Config.Message Szia Világ - frissítve! Hagyja üresen
  4. Figyelje meg a konzolalkalmazást – 30 másodpercen belül észlelnie kell a módosítást, és meg kell jelenítenie a frissített konfigurációt.

Erőforrások tisztítása

Ha nem szeretné folytatni a cikkben létrehozott erőforrások használatát, törölje az itt létrehozott erőforráscsoportot a díjak elkerülése érdekében.

Fontos

Egy erőforráscsoport törlése visszafordíthatatlan. Az erőforráscsoport és a benne lévő összes erőforrás véglegesen törlődik. Győződjön meg arról, hogy nem véletlenül törli a rossz erőforráscsoportot vagy erőforrásokat. Ha a cikk erőforrásait olyan erőforráscsoporton belül hozta létre, amely más megtartani kívánt erőforrásokat tartalmaz, törölje az egyes erőforrásokat a megfelelő panelről az erőforráscsoport törlése helyett.

  1. Jelentkezzen be az Azure Portalra, és válassza ki az Erőforráscsoportokat.
  2. A Szűrés név szerint mezőbe írja be az erőforráscsoport nevét.
  3. Az eredménylistában válassza ki az erőforráscsoport nevét az áttekintés megtekintéséhez.
  4. Válassza az Erőforráscsoport törlése lehetőséget.
  5. A rendszer az erőforráscsoport törlésének megerősítését kéri. Adja meg a megerősítéshez az erőforráscsoport nevét, és válassza a Törlés lehetőséget.

Néhány pillanat múlva az erőforráscsoport és annak összes erőforrása törlődik.