Oktatóanyag: Dinamikus konfiguráció használata leküldéses frissítéssel egy Java Spring-alkalmazásban

Az alkalmazáskonfigurációs Java Spring-ügyfélkódtár támogatja a konfiguráció igény szerinti frissítését anélkül, hogy az alkalmazás újraindulhat. Az alkalmazás konfigurálható úgy, hogy az alkalmazáskonfiguráció változásait az alábbi két módszer egyikével vagy mindkettővel észlelje.

  • Lekérdezési modell: A lekérdezési modell az alapértelmezett viselkedés, amely lekérdezést használ a konfiguráció változásainak észlelésére. Ha egy beállítás gyorsítótárazott értéke lejár, a következő hívás kérést küld a kiszolgálónakAppConfigurationRefreshrefreshConfigurations, hogy ellenőrizze, változott-e a konfiguráció, és szükség esetén lekéri a frissített konfigurációt.

  • Leküldéses modell: Alkalmazáskonfigurációs események használatával észleli a konfiguráció változásait. Ha az alkalmazáskonfiguráció be van állítva, hogy kulcsérték-változási eseményeket küldjön az Event Griddel, egy webhook segítségével az alkalmazás ezen események használatával optimalizálhatja a konfiguráció frissítéséhez szükséges kérések teljes számát.

Ez az oktatóanyag bemutatja, hogyan implementálhat dinamikus konfigurációs frissítéseket a kódban leküldéses frissítéssel. A rövid útmutatókban bemutatott alkalmazásra épül. A folytatás előtt fejezze be a A Java Spring-alkalmazás létrehozása az alkalmazáskonfigurációval először.

Az oktatóanyag lépéseit bármely kódszerkesztővel elvégezheti. Visual Studio Code kiváló lehetőség, amely Windows, macOS és Linux platformokon érhető el.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Előfizetés beállítása konfigurációváltozási események alkalmazáskonfigurációból webhookba való küldéséhez
  • Spring Boot-alkalmazás üzembe helyezése az App Service-ben
  • Állítsa be a Java Spring-alkalmazást, hogy az alkalmazáskonfiguráció változásaira reagálva frissítse a konfigurációját.
  • Használja az alkalmazás legújabb konfigurációját.

Előfeltételek

Ha nincs Azure fiókja, a kezdés előtt hozzon létre egy felszabadító fiókot.

Push frissítés beállítása

  1. Nyissa meg pom.xml , és frissítse a fájlt a következő függőségekkel.
<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>7.0.0</version>
        <type>pom</type>
        <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
  1. Állítsa be a Maven App Service üzembe helyezését, hogy az alkalmazás a Mavenen keresztül Azure App Service legyen üzembe helyezve.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
    
  2. Lépjen az alkalmazás resources könyvtárába, nyissa meg a application.properties fájlt, és konfigurálja az Azure App Configuration Push Refresh-t. Ha a fájl nem létezik, hozza létre. Adja hozzá a következő sort a fájlhoz.

    Az DefaultAzureCredential használatával hitelesítheti magát az Alkalmazáskonfigurációs áruházban. Kövesse az utasításokat a hitelesítő adatod Alkalmazás-konfigurációs Adatolvasó szerepkörrel való hozzárendeléséhez. Győződjön meg arról, hogy elegendő időt hagy az engedély propagálására az alkalmazás futtatása előtt. Hozzon létre egy AppConfigCredential.java nevű új fájlt, és adja hozzá a következő sorokat:

    spring.config.import=azureAppConfiguration
    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
    

    Emellett a következő kódot is hozzá kell adnia a projekthez, kivéve, ha felügyelt identitást szeretne használni:

    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());
        }
    }
    

    A Bootstrap konfiguráció hozzáadásához hozzon létre egy spring.factories fájlt a resources/META-INF könyvtárba, adja hozzá a következő sorokat, és cserélje le a com.example.MyApplication az alkalmazás nevére és csomagjára:

    org.springframework.cloud.bootstrap.BootstrapConfiguration=\
    com.example.MyApplication
    

A rendszer véletlenszerű késleltetést ad hozzá, mielőtt a gyorsítótárazott érték megjelölésre kerül piszkosként az esetleges korlátozás csökkentése érdekében. A gyorsítótárazott érték piszkosként való megjelölése előtt az alapértelmezett maximális késleltetés 30 másodperc.

Megjegyzés

Az elsődleges jogkivonat nevét kulcsként kell tárolni az Alkalmazáskonfigurációban, majd az elsődleges jogkivonat titkos kódját az Alkalmazáskonfiguráció Key Vault hivatkozásaként kell tárolni a hozzáadott biztonság érdekében.

Az alkalmazás létrehozása és futtatása az App Service-ben

Az Event Grid webhookok létrehozásakor érvényesítésre van szükség. Az ellenőrzéshez kövesse ezt a guide vagy indítsa el az alkalmazást a már konfigurált Azure App Configuration Spring Web Library használatával, amely regisztrálja az alkalmazást. Esemény-előfizetés használatához kövesse a következő két szakasz lépéseit.

  1. Környezeti változó beállítása.

    Állítsa a APP_CONFIGURATION_ENDPOINT nevű környezeti változót az áruház Overview alatt található alkalmazáskonfigurációs tár végpontjára a Azure portálon.

    Ha a Windows parancssort használja, futtassa a következő parancsot, és indítsa újra a parancssort a módosítás érvénybe lépésének engedélyezéséhez:

    setx APP_CONFIGURATION_ENDPOINT "endpoint-of-your-app-configuration-store"
    

    Ha a PowerShellt használja, futtassa a következő parancsot:

    $Env:APP_CONFIGURATION_ENDPOINT = "endpoint-of-your-app-configuration-store"
    

    MacOS vagy Linux használata esetén futtassa a következő parancsot:

    export APP_CONFIGURATION_ENDPOINT='<endpoint-of-your-app-configuration-store>'
    

    Indítsa újra a parancssort a módosítás érvénybe lépésének engedélyezéséhez. A környezeti változó értékének nyomtatásával ellenőrizheti, hogy megfelelően van-e beállítva.


  2. Frissítse a pom.xml alatti azure-webapp-maven-plugin-t a configuration alatt található "Hozzáadás" lehetőség segítségével.

    <appSettings>
      <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString>
    </appSettings>
    
  3. Futtassa a következő parancsot a konzolalkalmazás létrehozásához:

     mvn package
    
  4. A build sikeres befejezése után futtassa a következő parancsot az alkalmazás helyi futtatásához:

    mvn azure-webapp:deploy
    

Esemény-előfizetés beállítása

  1. Nyissa meg az alkalmazáskonfigurációs erőforrást a Azure portálon, majd válassza + Event Subscription a Events panelen.

    Az események panelen lehetőség van új előfizetések létrehozására.

  2. Adjon nevet a Event Subscription és a System Topic számára. Alapértelmezés szerint a módosított és törölt kulcsérték típusú eseménytípusok be vannak állítva, az ok módosítható a Szűrők lapon a leküldéses esemény elküldésének pontos okainak kiválasztásához.

    Az eseményekhez névre, témakörre és szűrőkre van szükség.

  3. Válassza ki Endpoint TypeWeb Hook-ként, majd válassza ki Select an endpoint.

    Végpont kiválasztása új blade-et hoz létre a végpont URI-jának megadásához.

  4. A végpont az alkalmazás URI-ja + "/actuator/appconfiguration-refresh? {your-token-name}={your-token-secret}". Például: https://my-azure-webapp.azurewebsites.net/actuator/appconfiguration-refresh?myToken=myTokenSecret

  5. Válassza ki Create az esemény-előfizetés létrehozásához. Ha Create be van jelölve, a rendszer regisztrációs kérelmet küld a Web Hookhoz az alkalmazásnak. A kérést a Azure App Configuration ügyfélkódtár fogadja, ellenőrzi, és érvényes választ ad vissza.

  6. Jelölje ki a Event Subscriptions elemet a Events ablakban, hogy ellenőrizze az előfizetés sikeres létrejöttét.

    A Web Hook megjelenik a lap alján található táblázatban.

Megjegyzés

A konfigurációváltozásokra való feliratkozáskor egy vagy több szűrő használatával csökkenthető az alkalmazásnak küldött események száma. Ezek Event Grid-előfizetés-szűrőkként is konfigurálhatók. Az előfizetési szűrővel például csak egy adott sztringgel kezdődő kulcs módosításaira lehet előfizetni az eseményekre.

Megjegyzés

Ha az alkalmazás több példánya fut, használhatja a appconfiguration-refresh-bus végpontot, amely Azure Service Bus beállítását igényli, amely az alkalmazás minden példányának üzenetet küld a konfiguráció frissítéséhez. Ez akkor hasznos, ha az alkalmazás több példánya fut, és biztosítani szeretné, hogy az összes példány a legújabb konfigurációval legyen frissítve. A végpont csak akkor érhető el, ha be van állítva függőségként a spring-cloud-bus. További információ: Azure Service Bus Spring Cloud Bus dokumentációja. A service bus-kapcsolatot csak be kell állítani, és a Azure App Configuration kódtár fogja kezelni az üzenetek küldését és fogadását.

Alkalmazás ellenőrzése és tesztelése

  1. Az alkalmazás futtatása után a curl használatával tesztelheti az alkalmazást, például:

    curl -X GET https://my-azure-webapp.azurewebsites.net
    
  2. Nyissa meg a Azure portált és keresse meg az alkalmazáshoz társított alkalmazáskonfigurációs erőforrást. Válassza a Konfigurációkezelőt a Műveletek területen, és frissítse az alábbi kulcsok értékeit:

    Kulcs Érték
    alkalmazás/config.message Szia – Frissítve
  3. Frissítse a böngészőlapot az új üzenet megjelenítéséhez.

Az erőforrások felszabadítása

Ha nem szeretné folytatni a cikkben létrehozott erőforrások használatát, törölje az itt létrehozott erőforráscsoportot a díjak elkerülése érdekében.

Fontos

Az erőforráscsoport törlése nem vonható vissza. Az erőforráscsoport és a benne lévő összes erőforrás véglegesen törlődik. Győződjön meg arról, hogy nem véletlenül törli a rossz erőforráscsoportot vagy erőforrásokat. Ha a cikk erőforrásait olyan erőforráscsoporton belül hozta létre, amely más megtartani kívánt erőforrásokat tartalmaz, törölje az egyes erőforrásokat a megfelelő panelről az erőforráscsoport törlése helyett.

  1. Jelentkezzen be a Azure portálra, és válassza a Csoportokat.
  2. A Szűrés név szerint mezőbe írja be az erőforráscsoport nevét.
  3. Az eredménylistában válassza ki az erőforráscsoport nevét az áttekintés megtekintéséhez.
  4. Válassza az Erőforráscsoport törlése lehetőséget.
  5. A rendszer az erőforráscsoport törlésének megerősítését kéri. Adja meg a megerősítéshez az erőforráscsoport nevét, és válassza a Törlés lehetőséget.

Néhány pillanat múlva az erőforráscsoport és annak összes erőforrása törlődik.

Következő lépések

Ebben az oktatóanyagban engedélyezte a Java alkalmazást, hogy dinamikusan frissítse a konfigurációs beállításokat az Alkalmazáskonfigurációból. További kérdésekért tekintse meg a referencia dokumentációját amely tartalmazza a Spring Cloud Azure App Configuration kódtár működését. Ha szeretné megtudni, hogyan használhat Azure felügyelt identitást az alkalmazáskonfigurációhoz való hozzáférés gördülékenyebbé tételéhez, folytassa a következő oktatóanyagban.