Självstudie: Använda dynamisk konfiguration med push-uppdatering i en Java Spring-app

Det App Configuration Java Spring-klientbiblioteket stöder uppdatering av konfigurationen på begäran utan att göra så 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 en begäran till servern för att kontrollera om konfigurationen har ändrats och hämtar den uppdaterade konfigurationen om AppConfigurationRefresh refreshConfigurations det behövs.

  • Push-modell: Här används App Configuration händelser för att identifiera ändringar i konfigurationen. När App Configuration har ställts in för att skicka ändringshändelser för nyckelvärden med Event Grid, med en webhhook, 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 hjälp av 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 göra stegen i den här självstudien. Visual Studio Code är ett utmärkt alternativ som är tillgängligt på Windows, macOS och Linux.

I den här guiden får du lära dig att:

  • Konfigurera en prenumeration för att skicka konfigurationsändringshändelser från App Configuration till en Web Hook
  • Distribuera ett Spring Boot 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

Om du inte har en Azure-prenumerationkan du skapa ett kostnads fritt konto innan du börjar.

Konfigurera push-uppdatering

  1. Öppna pom.xml och uppdatera filen med följande beroenden.

            <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. Konfigurera Maven App Service Deployment så att programmet kan distribueras till Azure App Service via Maven.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:1.12.0:config
    
  3. Öppna bootstrap.properties och konfigurera Azure App Configuration Push Refresh och 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"
    

En slumpmässig fördröjning läggs till innan det cachelagrade värdet markeras som grovt för att minska potentiell begränsning. Standardvärdet för maximal fördröjning innan det cachelagrade värdet markeras som dirty är 30 sekunder.

Anteckning

Det primära tokennamnet ska lagras i App Configuration som en nyckel, och sedan ska den primära tokenhemligheten lagras som en App Configuration Key Vault referens för extra säkerhet.

Skapa och köra appen lokalt

Event Grid Web Hooks kräver validering när de skapas. Du kan verifiera genom att följa den här guiden eller genom att starta ditt program med Azure App Configuration Spring Web Library redan konfigurerat, vilket registrerar ditt program åt dig. Om du vill använda en händelseprenumeration följer du stegen i följande två avsnitt.

  1. Ange miljövariabeln till App Configuration-instansens anslutningssträng:

    setx AppConfigurationConnectionString <connection-string-of-your-app-configuration-store>
    
  2. Kör följande kommando för att skapa konsolappen:

     mvn package
    
  3. När bygget har slutförts kör du följande kommando för att köra appen lokalt:

    mvn spring-boot:deploy
    

Konfigurera en händelseprenumeration

  1. Öppna App Configuration resurs i Azure Portal och klicka sedan + Event Subscription på i Events fönstret.

    Fönstret Händelser har ett alternativ för att skapa nya prenumerationer.

  2. Ange ett namn för Event Subscription och System Topic . Som standard anges de Key-Value och Key-Value borttagna händelsetyperna. Detta kan ändras tillsammans med fliken Filter för att välja de exakta orsakerna till att en push-händelse skickas.

    Händelser kräver namn, ämne och filter.

  3. Välj Endpoint Type som Web Hook , välj Select an endpoint .

    Om du väljer Slutpunkt skapas ett nytt blad för att ange slutpunktens URI.

  4. Slutpunkten är URI:en 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

  5. Klicka på Create för att skapa händelseprenumerationen. När Create väljs 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.

  6. Klicka på Event Subscriptions i fönstret för att verifiera att Events prenumerationen har skapats.

    Web Hook visas i en tabell längst ned på sidan.

Anteckning

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 eller Service Bus 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.

Verifiera och testa program

  1. När programmet körs använder du curl för att testa programmet, till exempel:

    curl -X GET http://localhost:8080
    
  2. Öppna Azure-portalen och gå till din App Configuration 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
  3. Uppdatera webbläsarsidan för att se det nya meddelandet.

Rensa resurser

Om du inte vill fortsätta använda resurserna som skapats i den här artikeln tar du bort resurs gruppen som du skapade här för att undvika avgifter.

Viktigt

Att ta bort en resursgrupp kan inte ångras. Resurs gruppen och alla resurser i den tas bort permanent. Var noga så att du inte tar bort fel resursgrupp eller resurser av misstag. Om du har skapat resurserna för den här artikeln i en resurs grupp som innehåller andra resurser som du vill behålla, tar du bort varje resurs separat från dess respektive fönster i stället för att ta bort resurs gruppen.

  1. Logga in på Azure Portaloch välj resurs grupper.
  2. I rutan Filtrera efter namn anger du namnet på din resurs grupp.
  3. I listan resultat väljer du resurs gruppens namn för att se en översikt.
  4. Välj Ta bort resursgrupp.
  5. Du blir ombedd att bekräfta borttagningen av resursgruppen. Ange namnet på resurs gruppen som ska bekräftas och välj ta bort.

Efter en liten stund tas resurs gruppen och alla dess resurser bort.

Nästa steg

I den här självstudien har du aktiverat din Java-app för att dynamiskt uppdatera konfigurationsinställningarna från App Configuration. Om du vill lära dig hur du använder en hanterad Azure-identitet för att effektivisera åtkomsten App Configuration kan du fortsätta till nästa självstudie.