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

De App Configuration Java Spring-clientbibliotheek ondersteunt het bijwerken van de configuratie op aanvraag zonder dat een toepassing opnieuw moet worden opgestart. Een toepassing kan worden geconfigureerd voor het detecteren van wijzigingen in App Configuration 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, stuurt de volgende aanroep naar een aanvraag naar de server om te controleren of de configuratie is gewijzigd en haalt de bijgewerkte configuratie indien nodig AppConfigurationRefresh refreshConfigurations op.

  • Pushmodel: dit maakt gebruik van App Configuration gebeurtenissen om wijzigingen in de configuratie te detecteren. Zodra App Configuration is ingesteld voor het verzenden van wijzigingsgebeurtenissen voor sleutelwaarde met Event Grid, kan de toepassing deze gebeurtenissen gebruiken om het totale aantal aanvragen te optimaliseren dat nodig is om de configuratie bij te werken.

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

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 configuratiewijzigingsgebeurtenissen van App Configuration naar een web hook
  • Een Spring Boot implementeren naar 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, maakt u een gratis account 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>azure-spring-cloud-appconfiguration-config-web</artifactId>
                <version>2.0.0</version>
            </dependency>
    
            <!-- Adds the Ability to Push Refresh -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    
  2. Maven instellen App Service implementatie, zodat de toepassing kan worden geïmplementeerd in Azure App Service via Maven.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:1.12.0:config
    
  3. Open bootstrap.properties en configureer Azure App Configuration Push Refresh en Azure Service Bus

    # 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.cacheExpiration= 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 wordt gemarkeerd als vervuild om mogelijke beperking te verminderen. De maximale standaardvertraging voordat de waarde in de cache als vervuild is gemarkeerd, is 30 seconden.

Notitie

De primaire tokennaam moet als sleutel worden opgeslagen in App Configuration en vervolgens moet het primaire tokengeheim worden opgeslagen als een App Configuration Key Vault Reference voor extra beveiliging.

De app lokaal compileren en uitvoeren

Event Grid web hooks vereisen validatie bij het maken. U kunt valideren door deze handleiding te volgen of door uw toepassing te starten met Azure App Configuration 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 App Configuration van uw connection string:

    setx AppConfigurationConnectionString <connection-string-of-your-app-configuration-store>
    
  2. Voer de volgende opdracht uit om de console-app te bouwen:

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

    mvn spring-boot:deploy
    

Een gebeurtenisabonnement instellen

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

    Het deelvenster Gebeurtenissen heeft een optie om nieuwe abonnementen te maken.

  2. Voer een naam in voor Event Subscription de en System Topic de . Standaard worden de gebeurtenistypen Key-Value gewijzigd en Key-Value verwijderd. Dit kan worden gewijzigd samen met het tabblad Filters om de exacte redenen te kiezen waarom een pushgebeurtenis wordt verzonden.

    Gebeurtenissen vereisen een naam, onderwerp en filters.

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

    Als u Eindpunt selecteert, wordt er een nieuwe blade gemaakt om de eindpunt-URI in te voeren.

  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 om Create het gebeurtenisabonnement te maken. Wanneer Create is geselecteerd, wordt er een registratieaanvraag voor de web hook verzonden naar uw toepassing. Dit wordt ontvangen door Azure App Configuration clientbibliotheek, geverifieerd en retourneert een geldig antwoord.

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

    Web hook wordt weergegeven in een tabel aan de onderkant van de pagina.

Notitie

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

Toepassing controleren en testen

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

    curl -X GET http://localhost:8080
    
  2. Open De Azure-portal en navigeer naar App Configuration resource die aan uw toepassing is gekoppeld. Selecteer Configuration Explorer onder Bewerkingen en werk de waarden van de volgende sleutels bij:

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

Resources opschonen

Als u niet door wilt gaan met de resources die in dit artikel zijn gemaakt, 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. 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.