Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Ce tutoriel montre comment implémenter des mises à jour de configuration dynamique dans une application web Gin à l’aide d’Azure App Configuration. Il s’appuie sur l’application web introduite dans le guide de démarrage rapide précédent.
Conditions préalables
Terminez le guide de démarrage rapide : Créer une application web Gin avec Azure App Configuration.
Recharger des données à partir d’Azure App Configuration
Ouvrez le fichier
appconfig.go. Dans la fonctionloadAzureAppConfiguration, mettez à jouroptionspour permettre l'actualisation. Le fournisseur Go recharge la configuration entière chaque fois qu’il détecte une modification dans l’une des valeurs de clé sélectionnées. Pour plus d’informations sur la surveillance des modifications de configuration, consultez les meilleures pratiques pour l’actualisation de la configuration.options := &azureappconfiguration.Options{ Selectors: []azureappconfiguration.Selector{ { KeyFilter: "Config.*", }, }, TrimKeyPrefixes: []string{"Config."}, RefreshOptions: azureappconfiguration.KeyValueRefreshOptions{ Enabled: true, }, }Conseil / Astuce
Vous pouvez définir la
Intervalpropriété de laRefreshOptionspropriété pour spécifier la durée minimale entre les actualisations de configuration. Dans cet exemple, vous utilisez la valeur par défaut de 30 secondes. Choisissez une valeur plus élevée si vous devez réduire le nombre de demandes adressées à votre magasin App Configuration.Mettez à jour votre
main.gofichier pour inscrire une fonction de rappel pour les mises à jour de configuration :// 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 //... ...Ajoutez un intergiciel d’actualisation de configuration. Mettez à jour
main.goà l’aide du code suivant.// 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 //... ...Utilisez l’intergiciel d’actualisation de la configuration :
// Existing code // ... ... router := gin.Default() // Use the configuration refresh middleware router.Use(configRefreshMiddleware(provider)) // The rest of existing code //... ...
Actualisation de la configuration pilotée par les demandes
L’actualisation de la configuration est déclenchée par les demandes entrantes adressées à votre application web. Aucune actualisation ne se produit si votre application est inactive. Lorsque votre application est active, l’intergiciel d’actualisation de la configuration surveille les valeurs de clé sélectionnées que vous avez configurées dans azureappconfiguration.Options. L’intergiciel est déclenché lors de chaque demande entrante adressée à votre application. Toutefois, l’intergiciel envoie uniquement des requêtes pour vérifier la valeur dans App Configuration lorsque l’intervalle d’actualisation que vous définissez est passé.
- En cas d’échec d’une demande de détection de changements adressée à App Configuration, votre application continue d’utiliser la configuration mise en cache. De nouvelles tentatives de recherche des changements sont effectuées régulièrement tant qu’il existe de nouvelles demandes entrantes adressées à votre application.
- L’actualisation de la configuration se produit de manière asynchrone par rapport au traitement des demandes entrantes de votre application. Cela ne bloque pas ou ne ralentit pas la requête entrante qui a déclenché l'actualisation. La demande qui a déclenché l’actualisation peut ne pas obtenir les valeurs de configuration mises à jour, mais les demandes ultérieures obtiendront de nouvelles valeurs de configuration.
- Pour vous assurer que l’intergiciel est déclenché, utilisez l’intergiciel d’actualisation de la configuration dès que nécessaire dans votre pipeline de requête afin qu’un autre intergiciel ne l’ignore pas dans votre application.
Exécuter l’application web
Maintenant que vous avez configuré l’actualisation de la configuration dynamique, testons-la pour voir comment cela fonctionne.
Exécutez l’application.
go mod tidy go run .Ouvrez un navigateur web et naviguez jusqu'à
http://localhost:8080pour accéder à votre application. La page web ressemble à ceci :
Accédez à votre magasin App Configuration et mettez à jour la valeur de la
Config.Messageclé.Clé Valeur Type de contenu Config.Message Bonjour à partir d’Azure App Configuration - maintenant avec des mises à jour actives ! Laissez ce champ vide Après avoir actualisé le navigateur quelques fois, vous verrez le contenu mis à jour une fois le ConfigMap mis à jour en 30 secondes.
Nettoyer les ressources
Si vous ne souhaitez plus utiliser les ressources créées dans cet article, supprimez le groupe de ressources que vous avez créé ici afin d’éviter des frais.
Important
La suppression d’un groupe de ressources est irréversible. Le groupe de ressources et toutes les ressources qu’il contient sont supprimés définitivement. Veillez à ne pas supprimer accidentellement les mauvaises ressources ou le mauvais groupe de ressources. Si vous avez créé les ressources pour cet article dans un groupe de ressources contenant d’autres ressources que vous souhaitez conserver, supprimez chaque ressource individuellement à partir de son volet, au lieu de supprimer l’intégralité du groupe de ressources.
- Connectez-vous au portail Azure, puis sélectionnez Groupes de ressources.
- Dans la zone Filtrer par nom, entrez le nom de votre groupe de ressources.
- Dans la liste de résultats, sélectionnez le nom du groupe de ressources pour afficher une vue d’ensemble.
- Sélectionnez Supprimer le groupe de ressources.
- Vous êtes invité à confirmer la suppression du groupe de ressources. Entrez le nom de votre groupe de ressources à confirmer, puis sélectionnez Supprimer.
Après quelques instants, le groupe de ressources et toutes ses ressources sont supprimés.