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

  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 Configuration de l’application dans le Portail Microsoft Azure, puis sélectionnez + Event Subscription dans le volet Events.

    Le volet des événements contient une option permettant de créer des abonnements.

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

    Les événements requièrent un nom, une rubrique et des filtres.

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

    La sélection d’un point de terminaison crée un nouveau panneau pour entrer l’URL du point de terminaison.

  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. Sélectionnez Create pour créer l'abonnement à l'événement. 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. Sélectionnez Event Subscriptions dans le volet Events pour valider que l'abonnement a été créé avec succès.

    Le webhook apparaît dans une table en bas de la page.

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

  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.