Sdílet prostřednictvím


Kurz: Použití dynamické konfigurace v JavaScriptu

V tomto kurzu se dozvíte, jak povolit dynamickou konfiguraci v javascriptových aplikacích. Příklad v tomto kurzu vychází z ukázkové aplikace představené v rychlém startu javascriptu. Než budete pokračovat, dokončete vytvoření javascriptové aplikace s konfigurací Aplikace Azure.

Požadavky

Přidání hodnot klíče

Do úložiště konfigurace Aplikace Azure přidejte následující hodnotu klíče. Další informace o tom, jak přidat hodnoty klíčů do úložiště pomocí webu Azure Portal nebo rozhraní příkazového řádku, najdete v tématu Vytvoření hodnoty klíče.

Klíč Hodnota Popisek Typ obsahu
zpráva Ahoj světe! Nechejte prázdné. Nechejte prázdné.

Konzolové aplikace

Následující příklady ukazují, jak používat aktualizovatelné konfigurační hodnoty v konzolových aplikacích. Na základě toho, jak vaše aplikace využívá konfigurační data načtená z App Configuration, buď jako Map objekt konfigurace, nebo jako objekt konfigurace, zvolte následující pokyny.

Načtení dat z konfigurace aplikace

Ke konfiguraci aplikace se můžete připojit pomocí Microsoft Entra ID (doporučeno) nebo připojovací řetězec. Následující fragment kódu ukazuje použití Microsoft Entra ID. Pomocí defaultAzureCredential se ověříte v obchodě App Configuration Store. Během dokončování rychlého startu uvedeného v požadavcích jste už přiřadili své přihlašovací údaje roli Čtenář dat konfigurace aplikace.

  1. Otevřete soubor app.js a aktualizujte load funkci. refreshOptions Přidejte parametr, který povolí aktualizaci a nakonfiguruje možnosti aktualizace. Načtená konfigurace se aktualizuje při zjištění změny na serveru. Ve výchozím nastavení se používá interval aktualizace 30 sekund, ale můžete ho refreshIntervalInMs přepsat vlastností.

    // Connecting to Azure App Configuration using endpoint and token credential
    const appConfig = await load(endpoint, credential, {
        // Enabling the dynamic refresh
        refreshOptions: {
            enabled: true
        }
    });
    

    Poznámka:

    Pokud se zobrazí chyba Aktualizace je povolená, ale nejsou zadána žádná zhlédnutá nastavení, aktualizujte @azure/app-configuration-provider balíček na verzi 2.0.0 nebo novější.

    Návod

    Pro více informací o sledování změn konfigurace viz Nejlepší praxe pro aktualizaci konfigurace.

  2. Samotné nastavení refreshOptions nebude automaticky aktualizovat konfiguraci. K aktivaci aktualizace je potřeba volat refresh metodu. Tento návrh zabraňuje zbytečným požadavkům na konfiguraci aplikace, když je vaše aplikace nečinná. Měli byste zahrnout volání, refresh ve kterém dojde k aktivitě vaší aplikace. To se označuje jako aktualizace konfigurace řízené aktivitami. Můžete například volat refresh při zpracování příchozí zprávy nebo objednávky nebo uvnitř iterace, kde provádíte složitý úkol. Případně můžete použít časovač, pokud je vaše aplikace vždy aktivní. V tomto příkladu refresh se volá ve smyčce pro demonstrační účely. I když volání z nějakého refresh důvodu selže, vaše aplikace bude dál používat konfiguraci uloženou v mezipaměti. Další pokus se provede, když se předá nakonfigurovaný interval aktualizace a refresh volání se aktivuje aktivitou vaší aplikace. Volání refresh je no-op před uplynutím nakonfigurovaného intervalu aktualizace, takže jeho dopad na výkon je minimální, i když se volá často.

    Přidejte následující kód pro dotazování změn konfigurace sledovaných hodnot klíč-hodnota.

    // Polling for configuration changes every 5 seconds
    while (true) {
        console.log(appConfig.get("message")); // Consume current value of message from a Map
        appConfig.refresh(); // Refreshing the configuration setting asynchronously
        await sleepInMs(5000); // Waiting before the next refresh
    }
    
  3. Teď by soubor app.js měl vypadat jako následující fragment kódu:

    const sleepInMs = require("util").promisify(setTimeout);
    const { load } = require("@azure/app-configuration-provider");
    const { DefaultAzureCredential } = require("@azure/identity");
    const endpoint = process.env.AZURE_APPCONFIG_ENDPOINT;
    const credential = new DefaultAzureCredential(); // For more information, see https://learn.microsoft.com/azure/developer/javascript/sdk/credential-chains#use-defaultazurecredential-for-flexibility
    
    async function run() {
        // Connecting to Azure App Configuration using endpoint and token credential
        const appConfig = await load(endpoint, credential, {
            // Enabling the dynamic refresh
            refreshOptions: {
                enabled: true
            }
        });
    
        // Polling for configuration changes every 5 seconds
        while (true) {
            console.log(appConfig.get("message")); // Consume current value of message from a Map
            appConfig.refresh(); // Refreshing the configuration setting asynchronously
            await sleepInMs(5000); // Waiting before the next refresh
        }
    }
    
    run().catch(console.error);
    

Spuštění aplikace

  1. Spusťte skript:

    node app.js
    
  2. Ověřit výstup:

    Hello World!
    

    Po 5 sekundách se v novém řádku bude dál tisknout text "Hello World!".

  3. Aktualizujte následující hodnoty klíče do úložiště konfigurace Aplikace Azure. Aktualizujte hodnotu klíče message.

    Klíč Hodnota Popisek Typ obsahu
    zpráva Hello World - aktualizováno! Nechejte prázdné. Nechejte prázdné.
  4. Po aktualizaci hodnot se aktualizovaná hodnota vytiskne po intervalu aktualizace.

    Hello World - Updated!
    

Serverová aplikace

Následující příklad ukazuje, jak aktualizovat existující server HTTP tak, aby používal aktualizovatelné konfigurační hodnoty.

  1. Vytvořte nový javascriptový soubor s názvem server.js a přidejte následující kód:

    const http = require('http');
    
    function startServer() {
        const server = http.createServer((req, res) => {
            res.statusCode = 200;
            res.setHeader('Content-Type', 'text/plain');
            res.end("Hello World!");
        });
    
        const hostname = "localhost";
        const port = 3000;
        server.listen(port, hostname, () => {
        console.log(`Server running at http://localhost:${port}/`);
        });
    }
    
    startServer();
    
  2. Spusťte skript:

    node server.js
    
  3. Navštivte http://localhost:3000 a uvidíte odpověď:

    Snímek obrazovky prohlížeče se zprávou

Načtení dat z konfigurace aplikace

  1. server.js Aktualizujte konfiguraci aplikace a povolte dynamickou aktualizaci:

    const http = require("http");
    
    const { load } = require("@azure/app-configuration-provider");
    const { DefaultAzureCredential } = require("@azure/identity");
    const endpoint = process.env.AZURE_APPCONFIG_ENDPOINT;
    const credential = new DefaultAzureCredential(); // For more information, see https://learn.microsoft.com/azure/developer/javascript/sdk/credential-chains#use-defaultazurecredential-for-flexibility
    
    let appConfig;
    async function initializeConfig() {
        appConfig = await load(endpoint, credential, {
            refreshOptions: {
                enabled: true,
                refreshIntervalInMs: 15_000 // set the refresh interval
            }
        });
    }
    
    function startServer() {
        const server = http.createServer((req, res) => {
            // refresh the configuration asynchronously when there is any incoming request
            appConfig.refresh();
            res.statusCode = 200;
            res.setHeader('Content-Type', 'text/plain');
            res.end(appConfig.get("message"));
        });
    
        const hostname = "localhost";
        const port = 3000;
        server.listen(port, hostname, () => {
        console.log(`Server running at http://localhost:${port}/`);
        });
    }
    
    // Initialize the configuration and then start the server
    initializeConfig()
        .then(() => startServer());
    

Aktualizace konfigurace řízené požadavky

Ve většině případů může být operace aktualizace poskytovatele konfigurace aplikace považována za operaci no-op. Odešle pouze požadavky, které zkontrolují hodnotu v App Configuration, když uplynula doba intervalu aktualizace, kterou jste nastavili.

Doporučujeme implementovat aktualizaci konfigurace řízené požadavky pro vaši webovou aplikaci. Aktualizace konfigurace se aktivuje příchozími požadavky vaší webové aplikace. Pokud je vaše aplikace nečinná, nedojde k žádné aktualizaci, když není příchozí požadavek. Když je vaše aplikace aktivní, můžete použít middleware nebo podobný mechanismus k aktivaci appConfig.refresh() volání při každém příchozím požadavku do vaší aplikace.

  • Pokud požadavek na konfiguraci aplikace pro detekci změn selže, vaše aplikace bude dál používat konfiguraci uloženou v mezipaměti. Nové pokusy o kontrolu změn se budou pravidelně provádět, zatímco ve vaší aplikaci probíhají nové příchozí požadavky.

  • Aktualizace konfigurace probíhá asynchronně ke zpracování příchozích požadavků vaší aplikace. Příchozí požadavek, který aktivoval aktualizaci, nezablokuje ani nezpomalí. Požadavek, který aktivoval aktualizaci, nemusí získat aktualizované hodnoty konfigurace, ale později požadavky získají nové hodnoty konfigurace.

Spuštění aplikace

  1. Znovu spusťte server HTTP:

    node server.js
    
  2. Navštivte a ověřte http://localhost:3000 odpověď, která je message klíčem v obchodě App Configuration Store.

    Snímek obrazovky prohlížeče se zprávou z Konfigurace aplikace

  3. Aktualizujte následující hodnoty klíče do úložiště konfigurace Aplikace Azure. Aktualizujte hodnotu klíče message.

    Klíč Hodnota Popisek Typ obsahu
    zpráva Hello World - aktualizováno! Nechejte prázdné. Nechejte prázdné.
  4. Přibližně po 15 sekundách aktualizujte stránku několikrát a zpráva by se měla aktualizovat.

    Snímek obrazovky prohlížeče s aktualizovanou zprávou z konfigurace aplikace

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 v JavaScriptu, aby dynamicky aktualizovala nastavení konfigurace z Aplikace Azure Konfigurace. Pokud chcete zjistit, jak pomocí spravované identity Azure zjednodušit přístup ke konfiguraci Aplikace Azure, pokračujte dalším kurzem.

Úplný přehled funkcí knihovny zprostředkovatele konfigurace JavaScriptu najdete v následujícím dokumentu.