Sdílet prostřednictvím


Kurz: Použití dynamické konfigurace pomocí nabízené aktualizace v aplikaci Java Spring

Klientská knihovna App Configuration Java Spring podporuje aktualizaci konfigurace na vyžádání, aniž by to způsobilo restartování aplikace. Aplikaci je možné nakonfigurovat tak, aby detekovala změny v konfiguraci aplikace pomocí jednoho nebo obou následujících dvou přístupů.

  • Model hlasování: Model hlasování je výchozí chování, které používá dotazování k detekci změn v konfiguraci. Jakmile vyprší platnost hodnoty nastavení uložené v mezipaměti, odešle další volání AppConfigurationRefreshrefreshConfigurations požadavku na server, aby zkontrolovalo, jestli se konfigurace změnila, a v případě potřeby vyžádá aktualizovanou konfiguraci.

  • Model nabízených oznámení: K detekci změn v konfiguraci se používají události konfigurace aplikace. Jakmile je služba App Configuration nastavená tak, aby v Event Gridu odesílala události změn klíčových hodnot pomocí webhooku, může aplikace tyto události použít k optimalizaci celkového počtu požadavků potřebných k aktualizaci konfigurace.

V tomto kurzu se dozvíte, jak můžete implementovat dynamické aktualizace konfigurace v kódu pomocí nabízené aktualizace. Sestavuje se v aplikaci představené v rychlých startech. Než budete pokračovat, nejprve dokončete vytvoření aplikace Java Spring s konfigurací aplikací.

Kroky v tomto kurzu můžete provést pomocí libovolného editoru kódu. Visual Studio Code je vynikající volbou, která je dostupná na platformách Windows, macOS a Linux.

V tomto kurzu se naučíte:

  • Nastavení předplatného pro odesílání událostí změn konfigurace ze služby App Configuration do webhooku
  • Nasazení aplikace Spring Boot do služby App Service
  • Nastavte aplikaci Java Spring tak, aby aktualizovala svou konfiguraci v reakci na změny v App Configuration.
  • Využití nejnovější konfigurace ve vaší aplikaci

Požadavky

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Nastavení nabízené aktualizace

  1. Otevřete pom.xml a aktualizujte soubor následujícími závislostmi.
<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>
  1. Nastavte nasazení služby App Service Maven, aby bylo možné aplikaci nasadit do služby Aplikace Azure Prostřednictvím Mavenu.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
    
  2. Přejděte do resources adresáře vaší aplikace a otevřete bootstrap.properties a nakonfigurujte Aplikace Azure Nabízená aktualizace konfigurace. Pokud soubor neexistuje, vytvořte ho. Do souboru přidejte následující řádek.

    Použijete DefaultAzureCredential k ověření ve službě App Configuration Store. Postupujte podle pokynů a přiřaďte své přihlašovací údaje roli Čtenář dat konfigurace aplikace. Před spuštěním aplikace nezapomeňte povolit dostatek času, než se oprávnění rozšíří. Vytvořte nový soubor s názvem AppConfigCredential.java a přidejte následující řádky:

    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
    

    Kromě toho musíte do projektu přidat následující kód, pokud nechcete používat spravovanou identitu:

    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 přidejte konfiguraci Bootstrap Configuration vytvořením spring.factories souboru v resources/META-INF adresáři a přidejte následující řádky a aktualizujte com.example.MyApplication ho názvem a balíčkem aplikace:

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

Náhodné zpoždění se přidá dříve, než se hodnota v mezipaměti označí jako nezašpiněná, aby se snížil potenciální omezování. Výchozí maximální zpoždění před označením hodnoty uložené v mezipaměti je 30 sekund.

Poznámka:

Název primárního tokenu by měl být uložený ve službě App Configuration jako klíč a tajný klíč primárního tokenu by se měl uložit jako referenční informace ke službě App Configuration Key Vault pro zvýšení zabezpečení.

Sestavení a spuštění aplikace ve službě App Service

Webhooky event Gridu vyžadují ověření při vytváření. Můžete to ověřit podle této příručky nebo spuštěním aplikace pomocí Aplikace Azure konfigurace spring webové knihovny, která vaši aplikaci zaregistruje za vás. Pokud chcete použít odběr událostí, postupujte podle kroků v následujících dvou částech.

  1. Nastavte proměnnou prostředí.

    Nastavte proměnnou prostředí s názvem APP_CONFIGURATION_ENDPOINT na koncový bod obchodu App Configuration, který najdete v části Přehled obchodu na webu Azure Portal.

    Pokud používáte příkazový řádek systému Windows, spusťte následující příkaz a restartujte příkazový řádek, aby se změna projevila:

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

    Pokud používáte PowerShell, spusťte následující příkaz:

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

    Pokud používáte macOS nebo Linux, spusťte následující příkaz:

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

    Restartujte příkazový řádek, aby se změna projevila. Vytiskněte hodnotu proměnné prostředí, abyste ověřili, že je správně nastavená.


  2. Aktualizujte svůj pom.xml pod azure-webapp-maven-pluginconfiguration přidáním

    <appSettings>
      <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString>
    </appSettings>
    
  3. Spuštěním následujícího příkazu sestavte konzolovou aplikaci:

     mvn package
    
  4. Po úspěšném dokončení sestavení spusťte aplikaci místně spuštěním následujícího příkazu:

    mvn azure-webapp:deploy
    

Nastavení odběru událostí

  1. Na webu Azure Portal otevřete prostředek App Configuration a pak vyberte + Event Subscription v Events podokně.

    Podokno událostí má možnost vytvořit nová předplatná.

  2. Zadejte název Event Subscription a název System Topic. Ve výchozím nastavení jsou změněny typy událostí změněné a odstraněné klíč-hodnota, důvod je možné změnit spolu s použitím karty Filtry a zvolit přesné důvody odeslání události push.

    Události vyžadují název, téma a filtry.

  3. Vyberte jako Endpoint TypeWeb Hook, vyberte Select an endpoint.

    Výběrem koncového bodu se vytvoří nové okno pro zadání identifikátoru URI koncového bodu.

  4. Koncový bod je identifikátor URI aplikace + "/poháněcí/appconfiguration-refresh? {your-token-name}={your-token-secret}". Například https://my-azure-webapp.azurewebsites.net/actuator/appconfiguration-refresh?myToken=myTokenSecret

  5. Vyberte Create , pokud chcete vytvořit odběr události. Po Create výběru se do vaší aplikace odešle žádost o registraci webového háku. Požadavek obdrží klientská knihovna Aplikace Azure Konfigurace, ověřená a vrátí platnou odpověď.

  6. Výběrem Event Subscriptions v podokně Events ověřte, že se předplatné úspěšně vytvořilo.

    Web Hook se zobrazí v tabulce v dolní části stránky.

Poznámka:

Při přihlášení k odběru změn konfigurace je možné použít jeden nebo více filtrů ke snížení počtu událostí odeslaných do vaší aplikace. Můžete je nakonfigurovat buď jako filtry odběru služby Event Grid. Filtr odběru se například dá použít jenom k přihlášení k odběru událostí pro změny v klíči, který začíná konkrétním řetězcem.

Poznámka:

Pokud máte spuštěných více instancí aplikace, můžete použít appconfiguration-refresh-bus koncový bod, který vyžaduje nastavení služby Azure Service Bus, které se používá k odeslání zprávy všem instancím aplikace, aby se aktualizovala jejich konfigurace. To je užitečné, pokud máte spuštěných více instancí aplikace a chcete zajistit, aby všechny instance byly aktualizovány nejnovější konfigurací. Tento koncový bod není k dispozici, pokud nemáte spring-cloud-bus nakonfigurovanou závislost. Další informace najdete v dokumentaci ke službě Azure Service Bus Spring Cloud Bus. Připojení ke službě Service Bus je potřeba nastavit pouze a knihovna konfigurace Aplikace Azure zpracuje odesílání a příjem zpráv.

Ověření a testování aplikace

  1. Po spuštění aplikace použijte curl k otestování aplikace, například:

    curl -X GET https://my-azure-webapp.azurewebsites.net
    
  2. Otevřete Azure Portal a přejděte k prostředku konfigurace aplikace přidruženému k vaší aplikaci. V části Operace vyberte Průzkumníka konfigurace a aktualizujte hodnoty následujících klíčů:

    Key Hodnota
    application/config.message Hello – aktualizováno
  3. Aktualizujte stránku prohlížeče, aby se zobrazila nová zpráva.

Vyčištění prostředků

Pokud nechcete dál používat prostředky vytvořené v tomto článku, odstraňte skupinu prostředků, kterou jste tady vytvořili, abyste se vyhnuli poplatkům.

Důležité

Odstranění skupiny prostředků je nevratné. Skupina prostředků a všechny prostředky v ní se trvale odstraní. Ujistěte se, že omylem neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste vytvořili prostředky pro tento článek ve skupině prostředků, která obsahuje další prostředky, které chcete zachovat, odstraňte jednotlivé prostředky z příslušného podokna místo odstranění skupiny prostředků.

  1. Přihlaste se k webu Azure Portal a vyberte skupiny prostředků.
  2. Do pole Filtrovat podle názvu zadejte název vaší skupiny prostředků.
  3. V seznamu výsledků vyberte název skupiny prostředků, abyste zobrazili přehled.
  4. Vyberte Odstranit skupinu prostředků.
  5. Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Potvrďte název skupiny prostředků a vyberte Odstranit.

Po chvíli se skupina prostředků a všechny její prostředky odstraní.

Další kroky

V tomto kurzu jste povolili aplikaci Java tak, aby dynamicky aktualizovala nastavení konfigurace z app Configuration. Další dotazy najdete v referenční dokumentaci, kde najdete všechny podrobnosti o tom, jak knihovna Spring Cloud Aplikace Azure Configuration library funguje. Pokud chcete zjistit, jak pomocí spravované identity Azure zjednodušit přístup ke službě App Configuration, pokračujte dalším kurzem.