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
AppConfigurationRefresh
derefreshConfigurations
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
- Azure-abonnement: u kunt een gratis abonnement nemen
- Een ondersteunde Java Development Kit (JDK) met versie 11.
- Apache Maven versie 3.0 of hoger.
- Een bestaand Azure-app configuratiearchief.
Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
Pushvernieuwing instellen
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>
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
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.
Stel de omgevingsvariabele in op de verbindingsreeks van uw App Configuration-exemplaar:
setx AppConfigurationConnectionString <connection-string-of-your-app-configuration-store>
Werk uw
pom.xml
bij onder deazure-webapp-maven-plugin
configuration
add<appSettings> <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString> </appSettings>
Voer de volgende opdracht uit om de console-app te bouwen:
mvn package
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
Open de App Configuration-resource in Azure Portal en klik vervolgens
+ Event Subscription
in hetEvents
deelvenster.Voer een naam in voor de
Event Subscription
en deSystem 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.Selecteer de
Endpoint Type
optie alsWeb Hook
, selecteerSelect an endpoint
.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
Klik op
Create
om het gebeurtenisabonnement te maken. WanneerCreate
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.Klik in
Event Subscriptions
hetEvents
deelvenster om te controleren of het abonnement is gemaakt.
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
Nadat uw toepassing wordt uitgevoerd, kunt u curl gebruiken om uw toepassing te testen; bijvoorbeeld:
curl -X GET https://my-azure-webapp.azurewebsites.net
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 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.
- Meld u aan bij de Azure-portal en selecteer Resourcegroepen.
- Voer de naam van de resourcegroep in het vak Filteren op naam in.
- Selecteer in de resultatenlijst de resourcegroepnaam om een overzicht te bekijken.
- Selecteer Resourcegroep verwijderen.
- 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.