Tutoriel : Utiliser la configuration dynamique avec l’actualisation en mode push dans une application Java Spring
La bibliothèque de client Java Spring App Configuration prend en charge la mise à jour de la configuration à la demande, sans entraîner le redémarrage de l’application. Une application peut être configurée pour détecter les changements dans App Configuration à l’aide de l’une ou des deux approches suivantes.
Modèle par interrogation (polling) : il s’agit du comportement par défaut qui utilise l’interrogation pour détecter des changements de configuration. Quand la valeur mise en cache d’un paramètre expire, l’appel suivant au
refreshConfigurations
deAppConfigurationRefresh
envoie une demande au serveur pour vérifier si la configuration a changé et tire (pull) la configuration mise à jour si nécessaire.Modèle d’envoi (push) : utilise les événements App Configuration pour détecter des changements de configuration. Une fois App Configuration configuré pour envoyer les événements de changement de paire clé-valeur avec Event Grid via un webhook, l’application peut utiliser ces événements pour optimiser le nombre total de demandes nécessaires pour tenir la configuration à jour.
Ce tutoriel vous montre comment implémenter des mises à jour de la configuration dynamique dans votre code à l’aide de l’actualisation en mode push. Il s’appuie sur l’application mentionnée dans les guides de démarrage rapide. Avant de continuer, suivez d’abord Créer une application Java Spring avec App Configuration.
Vous pouvez utiliser l’éditeur de code de votre choix pour exécuter les étapes de ce tutoriel. Visual Studio Code est une excellente option qui est disponible sur les plateformes Windows, macOS et Linux.
Dans ce tutoriel, vous allez apprendre à :
- Configurer un abonnement pour envoyer des événements de changement de configuration d’App Configuration à un webhook
- Déployer une application Spring Boot sur App Service
- Configurez votre application Java Spring pour mettre à jour sa configuration en réponse aux changements survenant dans App Configuration.
- Utiliser la configuration la plus récente dans votre application.
Prérequis
- Abonnement Azure : créez-en un gratuitement
- Kit de développement Java (JDK) pris en charge avec version 11.
- Apache Maven version 3.0 ou ultérieure
- Un magasin Azure App Configuration existant.
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
Configurer l’actualisation Push
Ouvrez pom.xml et mettez à jour le fichier avec les dépendances suivantes.
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId> </dependency> <!-- Adds the Ability to Push Refresh --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.8.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Configurez Maven App Service Deployment pour que l’application puisse être déployée sur Azure App Service par le biais de Maven.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
Ouvrez bootstrap.properties et configurez Azure App Configuration Push Refresh.
# Azure App Configuration Properties spring.cloud.azure.appconfiguration.stores[0].connection-string= ${AppConfigurationConnectionString} spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled= true spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 30d spring.cloud.azure.appconfiguration.stores[0].monitoring.triggers[0].key= sentinel spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.name= myToken spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.secret= myTokenSecret management.endpoints.web.exposure.include= appconfiguration-refresh
Un délai aléatoire est ajouté avant le marquage de la valeur mise en cache comme modifiée pour réduire la limitation potentielle. Le délai maximal par défaut avant que la valeur mise en cache soit marquée comme corrompue est de 30 secondes.
Remarque
Le nom du jeton principal doit être stocké dans App configuration en tant que clé, puis le secret du jeton principal doit être stocké en tant que référence au coffre de clés d’App Configuration pour renforcer la sécurité.
Générer et exécuter l’application dans App Service
Les webhooks d’Event Grid doivent être validés lors de leur création. Vous pouvez les valider en suivant ce Guide ou en démarrant votre application avec la bibliothèque d’Azure App Configuration déjà configurée, ce qui permet d’inscrire votre application pour vous. Pour utiliser un abonnement aux événements, suivez les étapes décrites dans les deux sections suivantes.
Définissez la variable d’environnement sur la chaîne de connexion de votre instance d’App Configuration :
setx AppConfigurationConnectionString <connection-string-of-your-app-configuration-store>
Mettre à jour votre
pom.xml
sous l’ajoutconfiguration
deazure-webapp-maven-plugin
<appSettings> <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString> </appSettings>
Exécutez la commande suivante pour générer l’application console :
mvn package
La génération terminée correctement, lancez la commande suivante pour exécuter l’application localement :
mvn azure-webapp:deploy
Configurer un abonnement à un événement
Ouvrez la ressource Configuration de l’application dans le Portail Microsoft Azure, puis sélectionnez
+ Event Subscription
dans le voletEvents
.Entrez un nom pour
Event Subscription
etSystem Topic
. Par défaut, les types d'événements valeur-clé modifiée et valeur-clé supprimée sont définis. Vous pouvez les modifier et utiliser l'onglet Filtres pour choisir les raisons exactes pour lesquelles un événement Push sera envoyé.Sélectionnez
Endpoint Type
en tant queWeb Hook
, sélectionnezSelect an endpoint
.Le point de terminaison est l’URL de l’application + « /actuator/appconfiguration-refresh?{your-token-name}={your-token-secret} ». Par exemple,
https://my-azure-webapp.azurewebsites.net/actuator/appconfiguration-refresh?myToken=myTokenSecret
Sélectionnez
Create
pour créer l'abonnement à l'événement. LorsqueCreate
est sélectionné, une demande d’inscription pour le webhook est envoyée à votre application. Cette valeur est reçue par la bibliothèque cliente d’Azure App Configuration, vérifiée et renvoie une réponse valide.Sélectionnez
Event Subscriptions
dans le voletEvents
pour valider que l'abonnement a été créé avec succès.
Notes
Quand vous vous abonnez à des changements de configuration, vous pouvez utiliser un ou plusieurs filtres pour réduire le nombre d’événements envoyés à votre application. Ceux-ci peuvent être configurés comme des filtres d'abonnement Event Grid. Par exemple, vous pouvez utiliser un filtre d’abonnement pour vous abonner uniquement aux événements liés à des changements dans une clé qui commence par une chaîne spécifique.
Remarque
Si plusieurs instances de votre application sont en cours d’exécution, vous pouvez utiliser le point de terminaison appconfiguration-refresh-bus
qui nécessite la configuration d’Azure Service Bus, qui est utilisé pour envoyer un message à toutes les instances de votre application afin d’actualiser leur configuration. Cela est utile si vous avez plusieurs instances de votre application en cours d'exécution et que vous souhaitez vous assurer que toutes les instances sont mises à jour avec la dernière configuration. Ce point de terminaison n'est pas disponible à moins que vous n'ayez spring-cloud-bus
comme une dépendance avec laquelle il est configuré. Consultez la documentation Azure Service Bus Spring Cloud Bus pour plus d’informations. Il suffit de configurer la connexion au bus de service et la bibliothèque Azure App Configuration gérera l’envoi et la réception des messages.
Vérifier et tester l’application
Lorsque votre application s’exécute, utilisez curl pour la tester. Par exemple :
curl -X GET https://my-azure-webapp.azurewebsites.net
Ouvrez le portail Azure et accédez à la ressource App Configuration associée à votre application. Sélectionnez Explorateur de configuration sous Opérations et mettez à jour les valeurs des clés suivantes :
Clé Valeur application/config.message Hello – Mis à jour Actualisez la page du navigateur pour afficher le nouveau message.
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.
Étapes suivantes
Dans ce tutoriel, vous avez permis à votre application Java d’actualiser dynamiquement les paramètres de configuration à partir d’App Configuration. Pour trouver les réponses à d’autres questions, consultez la documentation de référence qui contient tous les détails sur le fonctionnement de la bibliothèque Spring Cloud Azure App Configuration. Pour savoir comment utiliser une identité managée Azure afin de simplifier l’accès à App Configuration, passez au tutoriel suivant.