Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Lernprogramm wird gezeigt, wie Sie dynamische Konfigurationsupdates in einer Gin-Webanwendung mithilfe der Azure App-Konfiguration implementieren können. Sie baut auf der Web-App auf, die in der vorherigen Schnellstartanleitung eingeführt wurde.
Voraussetzungen
Beenden Sie den Schnellstart Erstellen einer Gin-Web-App mit Azure App Configuration.
Erneutes Laden von Daten aus App Configuration
Öffnen Sie die Datei
appconfig.go. Aktualisieren Sie innerhalb derloadAzureAppConfiguration-Funktion „options“, um die Aktualisierung zu aktivieren. Der Go-Anbieter lädt die gesamte Konfiguration neu, wenn eine Änderung in einem der ausgewählten Schlüsselwerte erkannt wird. Weitere Informationen zum Überwachen von Konfigurationsänderungen finden Sie unter Bewährte Methoden für die Aktualisierung der Konfiguration.options := &azureappconfiguration.Options{ Selectors: []azureappconfiguration.Selector{ { KeyFilter: "Config.*", }, }, TrimKeyPrefixes: []string{"Config."}, RefreshOptions: azureappconfiguration.KeyValueRefreshOptions{ Enabled: true, }, }Tipp
Sie können die
Interval-Eigenschaft desRefreshOptionsfestlegen, um die Mindestzeit zwischen Konfigurationsaktualisierungen anzugeben. In diesem Beispiel verwenden Sie den Standardwert von 30 Sekunden. Stellen Sie einen höheren Wert ein, wenn Sie die Anzahl der Anfragen an Ihren App Configuration Store verringern müssen.Aktualisieren Sie Ihre
main.goDatei, um eine Rückruffunktion für Konfigurationsupdates zu registrieren:// 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 //... ...Fügen Sie eine Middleware für die Konfigurationsaktualisierung hinzu. Aktualisieren Sie
main.gomit folgendem Code.// 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 //... ...Verwenden Sie die Middleware für die Konfigurationsaktualisierung:
// Existing code // ... ... router := gin.Default() // Use the configuration refresh middleware router.Use(configRefreshMiddleware(provider)) // The rest of existing code //... ...
Anforderungsgesteuerte Konfigurationsaktualisierung
Die Konfigurationsaktualisierung wird durch die eingehenden Anforderungen an Ihre Web-App ausgelöst. Es erfolgt keine Aktualisierung, wenn sich Ihre App im Leerlauf befindet. Wenn Ihre App aktiv ist, überwacht die Aktualisierungs-Middleware für die Konfiguration die ausgewählten Schlüsselwerte, die Sie in azureappconfiguration.Options konfiguriert haben. Die Middleware wird bei jeder eingehenden Anforderung Ihrer App ausgelöst. Die Middleware sendet jedoch nur Anforderungen, um den Wert in App Configuration zu überprüfen, wenn das von Ihnen festgelegte Aktualisierungsintervall verstrichen ist.
- Tritt bei einer an App Configuration gesendeten Änderungserkennungsanforderung ein Fehler auf, wird von Ihrer App weiterhin die zwischengespeicherte Konfiguration verwendet. In regelmäßigen Abständen werden neue Versuche unternommen, nach Änderungen zu suchen, während neue Anfragen bei Ihrer App eingehen.
- Die Konfigurationsaktualisierung wird asynchron zur Verarbeitung der eingehenden Anforderungen Ihrer App durchgeführt. Die eingehende Anforderung, durch die die Aktualisierung ausgelöst wurde, wird nicht blockiert oder verlangsamt. Die Anforderung, durch die die Aktualisierung ausgelöst wurde, erhält möglicherweise nicht die aktualisierten Konfigurationswerte, nachfolgende Anforderungen dagegen schon.
- Um sicherzustellen, dass die Middleware ausgelöst wird, verwenden Sie die Middleware für die Konfigurationsaktualisierung möglichst früh in Ihrer Anforderungspipeline, damit keine andere Middleware sie in Ihrer App überspringt.
Ausführen der Webanwendung
Nachdem Sie die dynamische Konfigurationsaktualisierung eingerichtet haben, testen wir sie, um sie in Aktion zu sehen.
Führen Sie die Anwendung aus.
go mod tidy go run .Öffnen Sie einen Webbrowser und navigieren Sie zu
http://localhost:8080, um auf Ihre Anwendung zuzugreifen. Die Webseite sieht folgendermaßen aus:
Navigieren Sie zu Ihrem App-Konfigurationsspeicher, und aktualisieren Sie den Wert des
Config.MessageSchlüssels.Schlüssel Wert Inhaltstyp Config.Message Hallo aus Der Azure App-Konfiguration – jetzt mit Liveupdates! Leer lassen Nachdem Sie den Browser ein paar Mal aktualisiert haben, wird der aktualisierte Inhalt angezeigt, sobald die ConfigMap in 30 Sekunden aktualisiert wurde.
Bereinigen von Ressourcen
Wenn Sie die in diesem Artikel erstellten Ressourcen nicht mehr verwenden möchten, löschen Sie die erstellte Ressourcengruppe, um Kosten zu vermeiden.
Von Bedeutung
Das Löschen einer Ressourcengruppe kann nicht rückgängig gemacht werden. Die Ressourcengruppe und alle darin enthaltenen Ressourcen werden unwiderruflich gelöscht. Achten Sie daher darauf, dass Sie nicht versehentlich die falsche Ressourcengruppe oder die falschen Ressourcen löschen. Falls Sie die Ressourcen für diesen Artikel in einer Ressourcengruppe erstellt haben, die andere beizubehaltende Ressourcen enthält, löschen Sie die Ressourcen einzeln über den entsprechenden Bereich, statt die Ressourcengruppe zu löschen.
- Melden Sie sich beim Azure-Portal an, und klicken Sie auf Ressourcengruppen.
- Geben Sie im Feld Nach Name filtern den Namen Ihrer Ressourcengruppe ein.
- Wählen Sie in der Ergebnisliste den Ressourcengruppennamen aus, um eine Übersicht anzuzeigen.
- Wählen Sie die Option Ressourcengruppe löschen.
- Sie werden aufgefordert, das Löschen der Ressourcengruppe zu bestätigen. Geben Sie zur Bestätigung den Namen Ihrer Ressourcengruppe ein, und klicken Sie auf Löschen.
Daraufhin werden die Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht.