Dela via


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 till AppConfigurationRefreshservern 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

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-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>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>
    
  2. 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
    
  3. Ö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.

  1. Ange miljövariabeln till appkonfigurationsinstansens anslutningssträng:

    setx AppConfigurationConnectionString <connection-string-of-your-app-configuration-store>
    
  2. Uppdatera din pom.xml under azure-webapp-maven-plugin's configuration add

    <appSettings>
      <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString>
    </appSettings>
    
  3. Kör följande kommando för att skapa konsolappen:

     mvn package
    
  4. 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

  1. Öppna appkonfigurationsresursen i Azure Portal och välj + Event Subscription sedan i fönstretEvents.

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

  2. Ange ett namn för Event Subscription och System 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.

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

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

    Om du väljer Slutpunkt skapas ett nytt blad för att ange slutpunkts-URI:n.

  4. 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

  5. Välj Create för att skapa händelseprenumerationen. När Create 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.

  6. Välj Event Subscriptions i fönstret Events för att verifiera att prenumerationen har skapats.

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

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

  1. 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
    
  2. Ö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
  3. 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.

  1. Logga in på Azure Portal och välj Resursgrupper.
  2. I rutan Filtrera efter namn anger du namnet på resursgruppen.
  3. I resultatlistan väljer du resursgruppens 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å 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.