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: Avsökningsmodellen ä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.18.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
Gå till katalogen för
resources
din app och öppnabootstrap.properties
och konfigurera push-uppdatering för Azure App Configuration. Om filen inte finns skapar du den. Lägg till följande rad i filen.Du använder för att autentisera
DefaultAzureCredential
till appkonfigurationsarkivet. Följ anvisningarna för att tilldela dina autentiseringsuppgifter rollen App Configuration Data Reader. Se till att ge tillräckligt med tid för att behörigheten ska spridas innan du kör programmet. Skapa en ny fil med namnet AppConfigCredential.java och lägg till följande rader: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
Dessutom måste du lägga till följande kod i projektet, såvida du inte vill använda hanterad identitet:
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()); } }
Lägg till konfigurationen Bootstrap Configuration genom att skapa
spring.factories
filen underresources/META-INF
katalogen och lägga till följande rader och uppdateracom.example.MyApplication
med programnamnet och paketet:org.springframework.cloud.bootstrap.BootstrapConfiguration=\ com.example.MyApplication
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 en miljövariabel.
Ange miljövariabeln med namnet APP_CONFIGURATION_ENDPOINT till slutpunkten för appkonfigurationsarkivet som finns under Översikt över din butik i Azure Portal.
Om du använder Windows-kommandotolken kör du följande kommando och startar om kommandotolken så att ändringen börjar gälla:
setx APP_CONFIGURATION_ENDPOINT "endpoint-of-your-app-configuration-store"
Om du använder PowerShell kör du följande kommando:
$Env:APP_CONFIGURATION_ENDPOINT = "endpoint-of-your-app-configuration-store"
Om du använder macOS eller Linux kör du följande kommando:
export APP_CONFIGURATION_ENDPOINT='<endpoint-of-your-app-configuration-store>'
Starta om kommandotolken så att ändringen börjar gälla. Skriv ut värdet för miljövariabeln för att verifiera att den har angetts korrekt.
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 anges orsaken kan ä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. Begäran 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 Dokumentation 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.