Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här självstudien visar hur du kan implementera dynamiska konfigurationsuppdateringar i ett Gin-webbprogram med hjälp av Azure App Configuration. Den bygger på webbappen som introducerades i föregående snabbstart.
Förutsättningar
Slutför snabbstarten: Skapa en Gin-webbapp med Azure App Configuration
Läsa in data på nytt från App Configuration
Öppna
appconfig.go-filen. I funktionenloadAzureAppConfigurationuppdaterar duoptionsfö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. 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
Intervalegenskapen förRefreshOptionsfö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.main.goUppdatera filen för att registrera en återanropsfunktion för konfigurationsuppdateringar:// Existing code // ... ... var config Config if err := provider.Unmarshal(&config, nil); err != nil { log.Fatalf("Failed to unmarshal configuration: %v", err) } // Register refresh callback provider.OnRefreshSuccess(func() { // Re-unmarshal the configuration err := provider.Unmarshal(&config, nil) if err != nil { log.Printf("Failed to unmarshal updated configuration: %s", err) return } }) // The rest of existing code //... ...Lägg till ett mellanprogram för konfigurationsuppdatering. Uppdatera
main.gomed följande kod.// Existing code // ... ... type App struct { Name string Port int } func configRefreshMiddleware(provider *azureappconfiguration.AzureAppConfiguration) gin.HandlerFunc { return func(c *gin.Context) { // Start refresh in a goroutine to avoid blocking the request go func() { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() if err := provider.Refresh(ctx); err != nil { log.Printf("Error refreshing configuration: %s", err) } }() c.Next() } } // The rest of existing code //... ...Använd mellanprogrammet för konfigurationsuppdatering:
// Existing code // ... ... router := gin.Default() // Use the configuration refresh middleware router.Use(configRefreshMiddleware(provider)) // The rest of existing code //... ...
Uppdatering av begärd konfiguration
Konfigurationsuppdateringen utlöses av inkommande begäranden till webbappen. Ingen uppdatering sker om appen är inaktiv. När appen är aktiv övervakar konfigurationsuppdateringen mellanprogrammet de valda nyckelvärden som du konfigurerade i azureappconfiguration.Options. Mellanprogrammet utlöses vid varje inkommande begäran till din app. Mellanprogrammet skickar dock bara begäranden om att kontrollera värdet i App Configuration när uppdateringsintervallet som du anger har passerat.
- Om en begäran till App Configuration för ändringsidentifiering misslyckas fortsätter appen att använda den cachelagrade konfigurationen. Nya försök att söka efter ändringar görs regelbundet medan det finns nya inkommande begäranden till din app.
- Konfigurationsuppdateringen sker asynkront vid bearbetningen av appens inkommande begäranden. Den blockerar eller saktar inte ned den inkommande begäran som utlöste uppdateringen. Begäran som utlöste uppdateringen kanske inte hämtar de uppdaterade konfigurationsvärdena, men senare begäranden får nya konfigurationsvärden.
- För att säkerställa att mellanprogrammet utlöses använder du mellanprogrammet för konfigurationsuppdatering så tidigt som det är lämpligt i pipelinen för begäran så att inget annat mellanprogram hoppar över det i din app.
Köra webbprogrammet
Nu när du har konfigurerat dynamisk konfigurationsuppdatering ska vi testa den för att se den i praktiken.
Kör programmet.
go mod tidy go run .Öppna en webbläsare och gå till
http://localhost:8080för att komma åt ditt program. Webbsidan ser ut så här:
Gå till appkonfigurationsarkivet och uppdatera värdet för
Config.Messagenyckeln.Nyckel Värde Innehållstyp Config.Message Hej från Azure App Configuration – nu med liveuppdateringar! Lämna tom När du har uppdaterat webbläsaren några gånger visas det uppdaterade innehållet när ConfigMap har uppdaterats om 30 sekunder.
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.
- Logga in på Azure Portal och välj Resursgrupper.
- I rutan Filtrera efter namn anger du namnet på resursgruppen.
- I resultatlistan väljer du resursgruppens namn för att se en översikt.
- Välj Ta bort resursgrupp.
- 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.