Dela via


Självstudie: Använda dynamisk konfiguration i JavaScript

I den här självstudien får du lära dig hur du aktiverar dynamisk konfiguration i dina JavaScript-program. Exemplet i den här självstudien bygger på exempelprogrammet som introducerades i JavaScript-snabbstarten. Slutför Skapa en JavaScript-app med Azure App Configuration innan du fortsätter.

Förutsättningar

Lägga till nyckelvärden

Lägg till följande nyckelvärde i Azure App Configuration Store. Mer information om hur du lägger till nyckelvärden i ett arkiv med hjälp av Azure Portal eller CLI finns i Skapa ett nyckelvärde.

Tangent Värde Etikett Innehållstyp
meddelande Hej världen! Lämna tom Lämna tom

Konsolprogram

Följande exempel visar hur du använder uppdateringsbara konfigurationsvärden i konsolprogram. Välj följande instruktioner baserat på hur ditt program använder konfigurationsdata som lästs in från App Configuration, antingen som ett Map eller ett konfigurationsobjekt.

Läsa in data från App Configuration

Du kan ansluta till App Configuration med antingen Microsoft Entra-ID (rekommenderas) eller en anslutningssträng. Följande kodfragment visar hur du använder Microsoft Entra-ID. Du använder StandardAzureCredential för att autentisera till appkonfigurationsarkivet. När du slutförde snabbstarten som anges i förhandskraven har du redan tilldelat autentiseringsuppgifterna rollen AppKonfigurationsdataläsare.

  1. Öppna filen app.js och uppdatera load funktionen. Lägg till en refreshOptions parameter för att aktivera uppdatering och konfigurera uppdateringsalternativ. Den inlästa konfigurationen uppdateras när en ändring identifieras på servern. Som standard används ett uppdateringsintervall på 30 sekunder, men du kan åsidosätta det med refreshIntervalInMs egenskapen .

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

    Kommentar

    Om du får felet "Uppdatera är aktiverat men inga övervakade inställningar har angetts.", uppdaterar @azure/app-configuration-provider du paketet till version 2.0.0 eller senare.

    Tips/Råd

    Mer information om hur du övervakar konfigurationsändringar finns i Metodtips för konfigurationsuppdatering.

  2. Konfigurationen uppdateras inte automatiskt när du konfigurerar refreshOptions den. Du måste anropa refresh metoden för att utlösa en uppdatering. Den här designen förhindrar onödiga begäranden till App Configuration när programmet är inaktivt. Du bör inkludera anropet där programaktiviteten refresh inträffar. Detta kallas aktivitetsdriven konfigurationsuppdatering. Du kan till exempel anropa refresh när du bearbetar ett inkommande meddelande eller en order, eller i en iteration där du utför en komplex uppgift. Du kan också använda en timer om programmet alltid är aktivt. I det här exemplet refresh anropas i en loop i demonstrationssyfte. Även om anropet refresh misslyckas av någon anledning fortsätter programmet att använda den cachelagrade konfigurationen. Ett annat försök görs när det konfigurerade uppdateringsintervallet har passerat och anropet utlöses av programaktiviteten refresh . Anrop refresh är en no-op innan det konfigurerade uppdateringsintervallet förflutit, så dess prestandapåverkan är minimal även om den anropas ofta.

    Lägg till följande kod för att avsöka konfigurationsändringar av övervakade nyckelvärden.

    // 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. Nu bör filen app.js se ut som följande kodfragment:

    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://free.blessedness.top/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);
    

Kör appen

  1. Kör skriptet:

    node app.js
    
  2. Verifiera utdata:

    Hello World!
    

    Den fortsätter att skriva ut "Hello World!" på en ny rad var 5:e sekund.

  3. Uppdatera följande nyckelvärden till Azure App Configuration Store. Uppdatera värdet för nyckeln message.

    Tangent Värde Etikett Innehållstyp
    meddelande Hello World - Uppdaterad! Lämna tom Lämna tom
  4. När värdena har uppdaterats skrivs det uppdaterade värdet ut efter uppdateringsintervallet.

    Hello World - Updated!
    

Serverprogram

I följande exempel visas hur du uppdaterar en befintlig http-server för att använda uppdateringsbara konfigurationsvärden.

  1. Skapa en ny JavaScript-fil med namnet server.js och lägg till följande kod:

    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. Kör skriptet:

    node server.js
    
  3. Besök http://localhost:3000 så ser du svaret:

    Skärmbild av webbläsaren med ett meddelande.

Läsa in data från App Configuration

  1. server.js Uppdatera för att använda App Configuration och aktivera dynamisk uppdatering:

    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://free.blessedness.top/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());
    

Uppdatering av begärd konfiguration

I de flesta fall kan uppdateringsåtgärden för appkonfigurationsprovidern behandlas som en no-op. Den skickar bara begäranden om att kontrollera värdet i App Configuration när uppdateringsintervalltiden som du anger har passerat.

Vi rekommenderar att du implementerar en uppdatering av den begärandedrivna konfigurationen för ditt webbprogram. Konfigurationsuppdateringen utlöses av inkommande begäranden till webbappen. Ingen uppdatering sker om appen är inaktiv när det inte finns någon inkommande begäran. När appen är aktiv kan du använda ett mellanprogram eller liknande för att utlösa anropet appConfig.refresh() vid varje inkommande begäran till ditt program.

  • Om en begäran till App Configuration för ändringsidentifiering misslyckas fortsätter appen att använda den cachelagrade konfigurationen. Nya försök att söka efter ändringar görs regelbundet medan det finns nya inkommande begäranden till din app.

  • Konfigurationsuppdateringen sker asynkront vid bearbetningen av appens inkommande begäranden. Den blockerar eller saktar inte ned den inkommande begäran som utlöste uppdateringen. Begäran som utlöste uppdateringen kanske inte hämtar de uppdaterade konfigurationsvärdena, men senare begäranden får nya konfigurationsvärden.

Kör appen

  1. Starta om http-servern:

    node server.js
    
  2. Besök http://localhost:3000 och verifiera svaret som är message nyckeln i appkonfigurationsarkivet.

    Skärmbild av webbläsaren med ett meddelande från App Configuration.

  3. Uppdatera följande nyckelvärden till Azure App Configuration Store. Uppdatera värdet för nyckeln message.

    Tangent Värde Etikett Innehållstyp
    meddelande Hello World - Uppdaterad! Lämna tom Lämna tom
  4. Efter cirka 15 sekunder uppdaterar du sidan flera gånger och meddelandet ska uppdateras.

    Skärmbild av webbläsaren med ett uppdaterat meddelande från App Configuration.

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 JavaScript-appen för att dynamiskt uppdatera konfigurationsinställningarna från Azure App Configuration. Om du vill lära dig hur du använder en hanterad Azure-identitet för att effektivisera åtkomsten till Azure App Configuration fortsätter du till nästa självstudie.

För den fullständiga funktionskörningen av JavaScript-konfigurationsproviderbiblioteket fortsätter du till följande dokument.