Självstudie: Använda dynamisk konfiguration med push-uppdatering i en Java Spring-app
Java Spring-klientbiblioteket för appkonfiguration stöder uppdatering av konfigurationen på begäran utan att ett program startas om. Ett program kan konfigureras för att identifiera ändringar i App Configuration med hjälp av en eller båda av följande två metoder.
Avsökningsmodell: Det här är standardbeteendet som använder avsökning för att identifiera ändringar i konfigurationen. När det cachelagrade värdet för en inställning upphör att gälla skickar nästa anrop till 's
refreshConfigurations
en begäran tillAppConfigurationRefresh
servern för att kontrollera om konfigurationen har ändrats och hämtar den uppdaterade konfigurationen om det behövs.Push-modell: Detta använder appkonfigurationshändelser för att identifiera ändringar i konfigurationen. När App Configuration har konfigurerats för att skicka viktiga värdeändringshändelser med Event Grid, med en webhook, kan programmet använda dessa händelser för att optimera det totala antalet begäranden som behövs för att hålla konfigurationen uppdaterad.
Den här självstudien visar hur du kan implementera dynamiska konfigurationsuppdateringar i koden med push-uppdatering. Den bygger på appen som introducerades i snabbstarterna. Innan du fortsätter slutför du Skapa en Java Spring-app med App Configuration först.
Du kan använda valfri kodredigerare för att utföra stegen i den här självstudien. Visual Studio Code är ett utmärkt alternativ som är tillgängligt på Plattformarna Windows, macOS och Linux.
I den här självstudien lär du dig att:
- Konfigurera en prenumeration för att skicka konfigurationsändringshändelser från App Configuration till en webbhook
- Distribuera ett Spring Boot-program till App Service
- Konfigurera Din Java Spring-app för att uppdatera konfigurationen som svar på ändringar i App Configuration.
- Använd den senaste konfigurationen i ditt program.
Förutsättningar
- Azure-prenumeration – skapa en kostnadsfritt
- Ett Java Development Kit (JDK) som stöds med version 11.
- Apache Maven version 3.0 eller senare.
- Ett befintligt Azure App Configuration Store.
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
Konfigurera push-uppdatering
Öppna pom.xml och uppdatera filen med följande beroenden.
<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>
Konfigurera Maven App Service-distribution så att programmet kan distribueras till Azure App Service via Maven.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
Öppna bootstrap.properties och konfigurera 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
En slumpmässig fördröjning läggs till innan det cachelagrade värdet markeras som smutsigt för att minska potentiella begränsningar. Den maximala standardfördröjningen innan det cachelagrade värdet markeras som smutsigt är 30 sekunder.
Kommentar
Namnet på den primära token ska lagras i App Configuration som en nyckel och sedan ska den primära tokenhemligheten lagras som en referens för appkonfigurationsnyckelvalvet för ökad säkerhet.
Skapa och köra appen i App Service
Event Grid Web Hooks kräver validering vid skapande. Du kan verifiera genom att följa den här guiden eller genom att starta ditt program med Azure App Configuration Spring Web Library som redan har konfigurerats, vilket registrerar ditt program åt dig. Följ stegen i de kommande två avsnitten om du vill använda en händelseprenumeration.
Ange miljövariabeln till appkonfigurationsinstansens anslutningssträng:
setx AppConfigurationConnectionString <connection-string-of-your-app-configuration-store>
Uppdatera din
pom.xml
underazure-webapp-maven-plugin
'sconfiguration
add<appSettings> <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString> </appSettings>
Kör följande kommando för att skapa konsolappen:
mvn package
När bygget har slutförts kör du följande kommando för att köra appen lokalt:
mvn azure-webapp:deploy
Konfigurera en händelseprenumeration
Öppna appkonfigurationsresursen i Azure Portal och välj
+ Event Subscription
sedan i fönstretEvents
.Ange ett namn för
Event Subscription
ochSystem Topic
. Som standard har nyckelvärdet För händelsetyper ändrats och Nyckelvärde tagits bort, kan detta ändras tillsammans med hjälp av fliken Filter för att välja de exakta orsakerna till att en push-händelse skickas.Endpoint Type
Välj somWeb Hook
och väljSelect an endpoint
.Slutpunkten är URI:n för programmet + "/actuator/appconfiguration-refresh? {your-token-name}={your-token-secret}". Till exempel
https://my-azure-webapp.azurewebsites.net/actuator/appconfiguration-refresh?myToken=myTokenSecret
Välj
Create
för att skapa händelseprenumerationen. NärCreate
har valts skickas en registreringsbegäran för Web Hook till ditt program. Detta tas emot av Azure App Configuration-klientbiblioteket, verifieras och returnerar ett giltigt svar.Välj
Event Subscriptions
i fönstretEvents
för att verifiera att prenumerationen har skapats.
Kommentar
När du prenumererar på konfigurationsändringar kan ett eller flera filter användas för att minska antalet händelser som skickas till ditt program. Dessa kan konfigureras antingen som Event Grid-prenumerationsfilter. Ett prenumerationsfilter kan till exempel bara användas för att prenumerera på händelser för ändringar i en nyckel som börjar med en specifik sträng.
Kommentar
Om du har flera instanser av programmet som körs kan du använda slutpunkten appconfiguration-refresh-bus
som kräver att du konfigurerar Azure Service Bus, som används för att skicka ett meddelande till alla instanser av programmet för att uppdatera konfigurationen. Detta är användbart om du har flera instanser av ditt program som körs och vill se till att alla instanser uppdateras med den senaste konfigurationen. Den här slutpunkten är inte tillgänglig om du inte har spring-cloud-bus
konfigurerat den som ett beroende. Mer information finns i Dokumentationen om Azure Service Bus Spring Cloud Bus. Service Bus-anslutningen behöver bara konfigureras och Azure App Configuration-biblioteket hanterar sändning och mottagning av meddelanden.
Verifiera och testa programmet
När programmet har körts använder du curl för att testa ditt program, till exempel:
curl -X GET https://my-azure-webapp.azurewebsites.net
Öppna Azure-portalen och gå till din appkonfigurationsresurs som är associerad med ditt program. Välj Configuration Explorer under Åtgärder och uppdatera värdena för följande nycklar:
Tangent Värde application/config.message Hello – uppdaterad Uppdatera webbläsarsidan för att se det nya meddelandet som visas.
Rensa resurser
Om du inte vill fortsätta använda resurserna som skapas i den här artikeln tar du bort resursgruppen som du skapade här för att undvika avgifter.
Viktigt!
Att ta bort en resursgrupp kan inte ångras. Resursgruppen och alla resurser i den tas bort permanent. Se till att du inte oavsiktligt tar bort fel resursgrupp eller resurser. Om du har skapat resurserna för den här artikeln i en resursgrupp som innehåller andra resurser som du vill behålla tar du bort varje resurs individuellt från respektive fönster i stället för att ta bort resursgruppen.
- Logga in på Azure Portal och välj Resursgrupper.
- I rutan Filtrera efter namn anger du namnet på resursgruppen.
- I resultatlistan väljer du resursgruppens namn för att se en översikt.
- Välj Ta bort resursgrupp.
- Du blir ombedd att bekräfta borttagningen av resursgruppen. Ange namnet på resursgruppen för att bekräfta och välj Ta bort.
Efter en liten stund tas resursgruppen och alla dess resurser bort.
Nästa steg
I den här självstudien har du aktiverat Java-appen för att dynamiskt uppdatera konfigurationsinställningarna från App Configuration. Mer information finns i referensdokumentationen om hur Spring Cloud Azure App Configuration-biblioteket fungerar. Om du vill lära dig hur du använder en hanterad Azure-identitet för att effektivisera åtkomsten till App Configuration fortsätter du till nästa självstudie.