Share via


Zelfstudie: Dynamische configuratie gebruiken met pushvernieuwing in een Java Spring-app

De Java Spring-clientbibliotheek van App Configuration ondersteunt het bijwerken van configuratie op aanvraag zonder dat een toepassing opnieuw wordt opgestart. Een toepassing kan worden geconfigureerd om wijzigingen in App Configuration te detecteren met behulp van een of beide van de volgende twee benaderingen.

  • Poll-model: dit is het standaardgedrag dat polling gebruikt om wijzigingen in de configuratie te detecteren. Zodra de waarde van een instelling in de cache is verlopen, verzendt de volgende aanroep naar AppConfigurationRefreshde refreshConfigurations server een aanvraag om te controleren of de configuratie is gewijzigd en haalt de bijgewerkte configuratie zo nodig op.

  • Push-model: dit maakt gebruik van App Configuration-gebeurtenissen om wijzigingen in de configuratie te detecteren. Zodra App Configuration is ingesteld voor het verzenden van belangrijke waardewijzigingsevenementen met Event Grid, kan de toepassing deze gebeurtenissen gebruiken om het totale aantal aanvragen te optimaliseren dat nodig is om de configuratie bijgewerkt te houden.

Deze zelfstudie laat zien hoe u dynamische configuratie-updates in uw code kunt implementeren met behulp van pushvernieuwing. Dit is gebaseerd op de app die is geïntroduceerd in de quickstarts. Voordat u doorgaat, moet u eerst een Java Spring-app maken met App Configuration .

U kunt elke code-editor gebruiken om de stappen in deze zelfstudie uit te voeren. Visual Studio Code is een uitstekende optie die beschikbaar is op de Windows-, macOS- en Linux-platforms.

In deze zelfstudie leert u het volgende:

  • Een abonnement instellen voor het verzenden van gebeurtenissen voor configuratiewijziging van App Configuration naar een webhook
  • Een Spring Boot-toepassing implementeren in App Service
  • Stel uw Java Spring-app in om de configuratie bij te werken als reactie op wijzigingen in App Configuration.
  • De meest recente configuratie in uw toepassing gebruiken.

Vereisten

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Pushvernieuwing instellen

  1. Open pom.xml en werk het bestand bij met de volgende afhankelijkheden.

    <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. Stel Maven App Service Deployment in, zodat de toepassing kan worden geïmplementeerd in Azure-app Service via Maven.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
    
  3. Open bootstrap.properties en configureer Azure-app pushvernieuwing configureren.

    # 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
    

Er wordt een willekeurige vertraging toegevoegd voordat de waarde in de cache als vuil wordt gemarkeerd om potentiële beperking te verminderen. De standaard maximumvertraging voordat de waarde in de cache wordt gemarkeerd als vuil is 30 seconden.

Notitie

De naam van het primaire token moet als sleutel worden opgeslagen in App Configuration en vervolgens moet het primaire tokengeheim worden opgeslagen als referentiemateriaal voor App Configuration Key Vault voor extra beveiliging.

De app bouwen en uitvoeren in app service

Voor Event Grid-webhook is validatie vereist bij het maken. U kunt valideren door deze handleiding te volgen of door uw toepassing te starten met Azure-app Configuratie Spring-webbibliotheek die al is geconfigureerd, waarmee uw toepassing voor u wordt geregistreerd. Als u een gebeurtenisabonnement wilt gebruiken, volgt u de stappen in de volgende twee secties.

  1. Stel de omgevingsvariabele in op de verbindingsreeks van uw App Configuration-exemplaar:

    setx AppConfigurationConnectionString <connection-string-of-your-app-configuration-store>
    
  2. Werk uw pom.xml bij onder de azure-webapp-maven-pluginconfiguration add

    <appSettings>
      <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString>
    </appSettings>
    
  3. Voer de volgende opdracht uit om de console-app te bouwen:

     mvn package
    
  4. Nadat het bouwen is voltooid, voert u de volgende opdracht uit om de app lokaal uit te voeren:

    mvn azure-webapp:deploy
    

Een gebeurtenisabonnement instellen

  1. Open de App Configuration-resource in Azure Portal en klik vervolgens + Event Subscription in het Events deelvenster.

    The events pane has an option to create new Subscriptions.

  2. Voer een naam in voor de Event Subscription en de System Topic. Standaard worden de gewijzigde sleutel-waarde van gebeurtenistypen en sleutelwaarde verwijderd, dit kan worden gewijzigd, samen met het tabblad Filters om de exacte redenen te kiezen waarom een pushgebeurtenis wordt verzonden.

    Events require a name, topic, and filters.

  3. Selecteer de Endpoint Type optie als Web Hook, selecteer Select an endpoint.

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

  4. Het eindpunt is de URI van de toepassing + "/actuator/appconfiguration-refresh? {your-token-name}={your-token-secret}". Bijvoorbeeld https://my-azure-webapp.azurewebsites.net/actuator/appconfiguration-refresh?myToken=myTokenSecret

  5. Klik op Create om het gebeurtenisabonnement te maken. Wanneer Create u een registratieaanvraag voor de webhook selecteert, wordt naar uw toepassing verzonden. Dit wordt ontvangen door de Azure-app Configuration-clientbibliotheek, geverifieerd en retourneert een geldig antwoord.

  6. Klik in Event Subscriptions het Events deelvenster om te controleren of het abonnement is gemaakt.

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

Notitie

Wanneer u zich abonneert op configuratiewijzigingen, kunnen een of meer filters worden gebruikt om het aantal gebeurtenissen dat naar uw toepassing wordt verzonden, te verminderen. Deze kunnen worden geconfigureerd als Event Grid-abonnementsfilters. Een abonnementsfilter kan bijvoorbeeld worden gebruikt om alleen te abonneren op gebeurtenissen voor wijzigingen in een sleutel die begint met een specifieke tekenreeks.

Notitie

Als er meerdere exemplaren van uw toepassing worden uitgevoerd, kunt u het appconfiguration-refresh-bus eindpunt gebruiken waarvoor Azure Service Bus moet worden ingesteld. Dit wordt gebruikt om een bericht te verzenden naar alle exemplaren van uw toepassing om de configuratie te vernieuwen. Dit is handig als u meerdere exemplaren van uw toepassing uitvoert en ervoor wilt zorgen dat alle exemplaren worden bijgewerkt met de nieuwste configuratie. Dit eindpunt is alleen beschikbaar als u een afhankelijkheid hebt spring-cloud-bus geconfigureerd. Raadpleeg de Documentatie voor Azure Service Bus Spring Cloud Bus voor meer informatie. De servicebusverbinding hoeft alleen te worden ingesteld en de Azure-app Configuratiebibliotheek verwerkt het verzenden en ontvangen van de berichten.

Toepassing controleren en testen

  1. Nadat uw toepassing wordt uitgevoerd, kunt u curl gebruiken om uw toepassing te testen; bijvoorbeeld:

    curl -X GET https://my-azure-webapp.azurewebsites.net
    
  2. Open Azure Portal en navigeer naar uw App Configuration-resource die is gekoppeld aan uw toepassing. Selecteer Configuration Explorer onder Operations en werk de waarden van de volgende sleutels bij:

    Sleutel Weergegeven als
    application/config.message Hallo - bijgewerkt
  3. Vernieuw de browserpagina om het nieuwe bericht te zien.

Resources opschonen

Als u de resources die in dit artikel zijn gemaakt niet wilt blijven gebruiken, verwijdert u de resourcegroep die u hier hebt gemaakt om kosten te voorkomen.

Belangrijk

Het verwijderen van een resourcegroep kan niet ongedaan worden gemaakt. De resourcegroep en alle resources daarin worden permanent verwijderd. Zorg ervoor dat u niet per ongeluk de verkeerde resourcegroep of resources verwijdert. Als u de resources voor dit artikel in een resourcegroep hebt gemaakt die andere resources bevat die u wilt behouden, moet u elke resource afzonderlijk verwijderen uit het deelvenster in plaats van dat u de resourcegroep verwijdert.

  1. Meld u aan bij de Azure-portal en selecteer Resourcegroepen.
  2. Voer de naam van de resourcegroep in het vak Filteren op naam in.
  3. Selecteer in de resultatenlijst de resourcegroepnaam om een overzicht te bekijken.
  4. Selecteer Resourcegroep verwijderen.
  5. U wordt gevraagd om het verwijderen van de resourcegroep te bevestigen. Voer de naam van de resourcegroep in ter bevestiging en selecteer Verwijderen.

Na enkele ogenblikken worden de resourcegroep en alle bijbehorende resources verwijderd.

Volgende stappen

In deze zelfstudie hebt u uw Java-app ingeschakeld om configuratie-instellingen dynamisch te vernieuwen vanuit App Configuration. Zie de referentiedocumentatie voor meer vragen en bevat alle details over de werking van de Spring Cloud Azure-app Configuration-bibliotheek. Als u wilt weten hoe u een door Azure beheerde identiteit kunt gebruiken om de toegang tot App Configuration te stroomlijnen, gaat u verder met de volgende zelfstudie.