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: Het pollmodel 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 wordt de bijgewerkte configuratie zo nodig opgehaald.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.18.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
Navigeer naar de
resources
map van uw app en openbootstrap.properties
en configureer Azure-app pushvernieuwing van configuratie. Als het bestand niet bestaat, maakt u het. Voeg de volgende regel aan het bestand toe.U gebruikt de
DefaultAzureCredential
app om u te verifiëren bij uw App Configuration-archief. Volg de instructies om uw referenties toe te wijzen aan de rol App Configuration Data Reader . Zorg ervoor dat u voldoende tijd hebt om de machtiging door te geven voordat u de toepassing uitvoert. Maak een nieuw bestand met de naam AppConfigCredential.java en voeg de volgende regels toe:spring.cloud.azure.appconfiguration.stores[0].endpoint= ${APP_CONFIGURATION_ENDPOINT} 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
Daarnaast moet u de volgende code toevoegen aan uw project, tenzij u Beheerde identiteit wilt gebruiken:
import org.springframework.stereotype.Component; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.identity.DefaultAzureCredentialBuilder; import com.azure.spring.cloud.appconfiguration.config.ConfigurationClientCustomizer; @Component public class AppConfigCredential implements ConfigurationClientCustomizer { @Override public void customize(ConfigurationClientBuilder builder, String endpoint) { builder.credential(new DefaultAzureCredentialBuilder().build()); } }
En voeg configuratie Bootstrap Configuration toe door een bestand te maken
spring.factories
onderresources/META-INF
de map en de volgende regels toe te voegen en bij te werkencom.example.MyApplication
met de naam en het pakket van uw toepassing:org.springframework.cloud.bootstrap.BootstrapConfiguration=\ com.example.MyApplication
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 een omgevingsvariabele in.
Stel de omgevingsvariabele met de naam APP_CONFIGURATION_ENDPOINT in op het eindpunt van uw App Configuration-archief in het overzicht van uw winkel in Azure Portal.
Als u de Windows-opdrachtprompt gebruikt, voert u de volgende opdracht uit en start u de opdrachtprompt opnieuw om de wijziging door te voeren:
setx APP_CONFIGURATION_ENDPOINT "endpoint-of-your-app-configuration-store"
Als u PowerShell gebruikt, voert u de volgende opdracht uit:
$Env:APP_CONFIGURATION_ENDPOINT = "endpoint-of-your-app-configuration-store"
Als u macOS of Linux gebruikt, voert u de volgende opdracht uit:
export APP_CONFIGURATION_ENDPOINT='<endpoint-of-your-app-configuration-store>'
Start de opdrachtprompt opnieuw op om de wijziging door te voeren. Druk de waarde van de omgevingsvariabele af om te controleren of deze juist is ingesteld.
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 selecteer
+ Event Subscription
vervolgens 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, de reden 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
Selecteer
Create
dit om het gebeurtenisabonnement te maken. WanneerCreate
deze optie is geselecteerd, wordt er een registratieaanvraag voor de webhook verzonden naar uw toepassing. De aanvraag wordt ontvangen door de Azure-app Configuratieclientbibliotheek, geverifieerd en retourneert een geldig antwoord.Selecteer
Event Subscriptions
in 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. Zie 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.