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) : le modèle d’interrogation est le 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.18.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
Accédez au répertoire
resources
de votre application et ouvrezbootstrap.properties
et configurez l’actualisation Push d’Azure App Configuration. Si le fichier n’existe pas, créez-le. Ajoutez la ligne suivante au fichier.Vous utilisez le
DefaultAzureCredential
pour vous authentifier auprès de votre magasin App Configuration. Suivez les instructions pour attribuer à votre identifiant le rôle de lecteur de données de configuration de l'application. Veillez à laisser suffisamment de temps pour que l’autorisation se propage avant d’exécuter votre application. Créez un fichier nommé AppConfigCredential.java et ajoutez les lignes suivantes :spring.cloud.azure.appconfiguration.stores[0].endpoint= ${APP_CONFIGURATION_ENDPOINT} 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
En outre, vous devez ajouter le code suivant à votre projet, à moins que vous ne souhaitiez utiliser Managed Identity :
import org.springframework.stereotype.Component; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.identity.DefaultAzureCredentialBuilder; import com.azure.spring.cloud.appconfiguration.config.ConfigurationClientCustomizer; @Component public class AppConfigCredential implements ConfigurationClientCustomizer { @Override public void customize(ConfigurationClientBuilder builder, String endpoint) { builder.credential(new DefaultAzureCredentialBuilder().build()); } }
Et ajoutez une configuration Bootstrap Configuration en créant un fichier
spring.factories
sous le répertoireresources/META-INF
et ajoutez les lignes suivantes et mettez à jourcom.example.MyApplication
avec le nom et le package de votre application :org.springframework.cloud.bootstrap.BootstrapConfiguration=\ com.example.MyApplication
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 une variable d’environnement.
Définissez la variable d’environnement nommée APP_CONFIGURATION_ENDPOINT sur le point de terminaison de votre magasin App Configuration trouvé sous la Vue d’ensemble de votre magasin dans le Portail Microsoft Azure.
Si vous utilisez l’invite de commandes Windows, exécutez la commande suivante et redémarrez l’invite pour que la modification soit prise en compte :
setx APP_CONFIGURATION_ENDPOINT "endpoint-of-your-app-configuration-store"
Si vous utilisez PowerShell, utilisez la commande suivante :
$Env:APP_CONFIGURATION_ENDPOINT = "endpoint-of-your-app-configuration-store"
Si vous utilisez macOS ou Linux, exécutez la commande suivante :
export APP_CONFIGURATION_ENDPOINT='<endpoint-of-your-app-configuration-store>'
Redémarrez l’invite de commandes pour que la modification soit prise en compte. Imprimez la valeur de la variable d’environnement pour confirmer qu’elle est correctement définie.
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 modifier la raison et utiliser l'onglet Filtres pour choisir les raisons exactes pour lesquelles un événement Push est 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. La requête 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é. Pour plus d’informations, consultez la documentation Azure Service Bus Spring Cloud Bus. 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.