Share via


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 de AppConfigurationRefresh 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

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Configurer l’actualisation Push

  1. 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>
    
  2. 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
    
  3. Ouvrez bootstrap.properties et configurez l’actualisation Push d’Azure App Configuration.

    # 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.

  1. 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>
    
  2. Mettre à jour votre pom.xml sous l’ajout configuration de azure-webapp-maven-plugin

    <appSettings>
      <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString>
    </appSettings>
    
  3. Exécutez la commande suivante pour générer l’application console :

     mvn package
    
  4. 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

  1. Ouvrez la ressource App Configuration dans le portail Azure, puis cliquez sur + Event Subscription dans le volet Events.

    The events pane has an option to create new Subscriptions.

  2. Entrez un nom pour Event Subscription et System 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é.

    Events require a name, topic, and filters.

  3. Sélectionnez Endpoint Type en tant que Web Hook, sélectionnez Select an endpoint.

    Selecting Endpoint creates a new blade to enter the endpoint URI.

  4. 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

  5. Cliquez sur Create pour créer l’abonnement aux événements. Lorsque Create 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.

  6. Cliquez sur Event Subscriptions dans le volet Events pour confirmer que l’abonnement a bien été créé.

    Web Hook shows up in a table on the bottom of the page.

Remarque

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 en tant que 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 vous avez plusieurs instances de votre application en cours d’exécution, vous pouvez utiliser le point de terminaison qui nécessite la appconfiguration-refresh-bus configuration d’Azure Service Bus, qui est utilisé pour envoyer un message à toutes les instances de votre application pour actualiser leur configuration. Cela est utile si vous avez plusieurs instances de votre application en cours d’exécution et souhaitez vous assurer que toutes les instances sont mises à jour avec la dernière configuration. Ce point de terminaison n’est pas disponible, sauf si vous disposez spring-cloud-bus d’une dépendance avec celle-ci configurée. Pour plus d’informations, consultez la documentation Azure Service Bus Spring Cloud Bus. La connexion Service Bus doit uniquement être configurée et la bibliothèque Azure App Configuration gère l’envoi et la réception des messages.

Vérifier et tester l’application

  1. Lorsque votre application s’exécute, utilisez curl pour la tester. Par exemple :

    curl -X GET https://my-azure-webapp.azurewebsites.net
    
  2. 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
  3. 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.

  1. Connectez-vous au portail Azure, puis sélectionnez Groupes de ressources.
  2. Dans la zone Filtrer par nom, entrez le nom de votre groupe de ressources.
  3. Dans la liste de résultats, sélectionnez le nom du groupe de ressources pour afficher une vue d’ensemble.
  4. Sélectionnez Supprimer le groupe de ressources.
  5. 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.