Udostępnij za pomocą


Samouczek: używanie konfiguracji dynamicznej w języku JavaScript

Z tego samouczka dowiesz się, jak włączyć konfigurację dynamiczną w aplikacjach JavaScript. Przykład w tym samouczku opiera się na przykładowej aplikacji wprowadzonej w przewodniku Szybki start języka JavaScript. Przed kontynuowaniem zakończ tworzenie aplikacji JavaScript przy użyciu aplikacja systemu Azure Configuration.

Wymagania wstępne

Dodawanie wartości klucz-wartość

Dodaj następującą wartość klucza do magazynu konfiguracji aplikacja systemu Azure. Aby uzyskać więcej informacji na temat dodawania wartości klucz-wartości do magazynu przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia, przejdź do artykułu Create a key-value (Tworzenie wartości klucza).

Klawisz Wartość Etykieta Typ zawartości
Komunikat Cześć ludzie! Pozostaw pole puste Pozostaw pole puste

Aplikacje konsolowe

W poniższych przykładach pokazano, jak używać odświeżalnych wartości konfiguracji w aplikacjach konsoli. Wybierz poniższe instrukcje na podstawie sposobu, w jaki aplikacja korzysta z danych konfiguracji załadowanych z usługi App Configuration jako Map obiektu konfiguracji lub .

Ładowanie danych z usługi App Configuration

Możesz nawiązać połączenie z usługą App Configuration przy użyciu identyfikatora Entra firmy Microsoft (zalecane) lub parametry połączenia. Poniższy fragment kodu przedstawia użycie identyfikatora Entra firmy Microsoft. Do uwierzytelniania w magazynie App Configuration należy użyć wartości DefaultAzureCredential. Podczas wykonywania kroków Szybki start wymienionych w wymaganiach wstępnych przypisano już swoje poświadczenia roli Czytelnik danych konfiguracji aplikacji.

  1. Otwórz plik app.js i zaktualizuj load funkcję. Dodaj parametr, aby włączyć odświeżanie refreshOptions i skonfigurować opcje odświeżania. Załadowana konfiguracja zostanie zaktualizowana po wykryciu zmiany na serwerze. Domyślnie jest używany interwał odświeżania wynoszący 30 sekund, ale można go zastąpić właściwością refreshIntervalInMs .

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

    Uwaga

    Jeśli wystąpi błąd: "Odświeżanie jest włączone, ale nie określono żadnych obserwowanych ustawień"., zaktualizuj @azure/app-configuration-provider pakiet do wersji 2.0.0 lub nowszej.

    Wskazówka

    Aby uzyskać więcej informacji na temat monitorowania zmian konfiguracji, zobacz Najlepsze rozwiązania dotyczące odświeżania konfiguracji.

  2. Skonfigurowanie refreshOptions samej konfiguracji nie spowoduje automatycznego odświeżenia konfiguracji. Aby wyzwolić odświeżanie, należy wywołać refresh metodę . Ten projekt uniemożliwia niepotrzebne żądania do usługi App Configuration, gdy aplikacja jest bezczynna. Należy dołączyć refresh wywołanie, w którym występuje działanie aplikacji. Jest to nazywane odświeżaniem konfiguracji opartej na działaniach. Można na przykład wywołać refresh metodę przetwarzania komunikatu przychodzącego lub zamówienia albo wewnątrz iteracji, w której wykonujesz złożone zadanie. Alternatywnie możesz użyć czasomierza, jeśli aplikacja jest zawsze aktywna. W tym przykładzie refresh nazwa jest wywoływana w pętli na potrzeby demonstracyjne. Nawet jeśli refresh wywołanie zakończy się niepowodzeniem z jakiegokolwiek powodu, aplikacja będzie nadal używać buforowanej konfiguracji. Kolejna próba zostanie podjęta po upływie skonfigurowanego interwału odświeżania, a refresh wywołanie zostanie wyzwolone przez działanie aplikacji. Wywołanie refresh jest operacją no-op przed upływem skonfigurowanego interwału odświeżania, więc jego wpływ na wydajność jest minimalny, nawet jeśli jest wywoływany często.

    Dodaj następujący kod, aby sondować zmiany konfiguracji obserwowanych klucz-wartości.

    // 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. Teraz plik app.js powinien wyglądać podobnie do następującego fragmentu kodu:

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

Uruchamianie aplikacji

  1. Uruchom skrypt:

    node app.js
    
  2. Sprawdź dane wyjściowe:

    Hello World!
    

    Kontynuuje drukowanie "Hello World!" w nowym wierszu co 5 sekund.

  3. Zaktualizuj następujące wartości klucza do magazynu konfiguracji aplikacja systemu Azure. Zaktualizuj wartość klucza message.

    Klawisz Wartość Etykieta Typ zawartości
    Komunikat Witaj, świecie — zaktualizowano! Pozostaw pole puste Pozostaw pole puste
  4. Po zaktualizowaniu wartości zaktualizowana wartość zostanie wydrukowana po interwale odświeżania.

    Hello World - Updated!
    

Serwer aplikacji

W poniższym przykładzie pokazano, jak zaktualizować istniejący serwer HTTP w celu używania odświeżalnych wartości konfiguracji.

  1. Utwórz nowy plik JavaScript o nazwie server.js i dodaj następujący 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. Uruchom skrypt:

    node server.js
    
  3. Odwiedź stronę http://localhost:3000 i zobaczysz odpowiedź:

    Zrzut ekranu przedstawiający przeglądarkę z komunikatem.

Ładowanie danych z usługi App Configuration

  1. Zaktualizuj element server.js , aby używać usługi App Configuration i włączyć odświeżanie dynamiczne:

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

Odświeżanie konfiguracji opartej na żądaniach

W większości przypadków operację odświeżania dostawcy usługi App Configuration można traktować jako operację bez operacji. Będzie wysyłać żądania tylko w celu sprawdzenia wartości w usłudze App Configuration po upływie ustawionego czasu interwału odświeżania.

Zalecamy zaimplementowanie odświeżania konfiguracji opartej na żądaniach dla aplikacji internetowej. Odświeżanie konfiguracji jest wyzwalane przez przychodzące żądania do aplikacji internetowej. Jeśli aplikacja nie będzie w stanie bezczynności, w przypadku braku żądań przychodzących nie wystąpi żadne odświeżanie. Gdy aplikacja jest aktywna, możesz użyć oprogramowania pośredniczącego lub podobnego mechanizmu, aby wyzwolić appConfig.refresh() wywołanie dla każdego przychodzącego żądania do aplikacji.

  • Jeśli żądanie do usługi App Configuration dotyczące wykrywania zmian nie powiedzie się, aplikacja będzie nadal używać buforowanej konfiguracji. Nowe próby sprawdzenia, czy zmiany zostaną wprowadzone okresowo, gdy do aplikacji będą wysyłane nowe żądania przychodzące.

  • Odświeżanie konfiguracji odbywa się asynchronicznie do przetwarzania żądań przychodzących aplikacji. Nie spowoduje to zablokowania ani spowolnienia żądania przychodzącego, które wyzwoliło odświeżanie. Żądanie, które wyzwoliło odświeżanie, może nie uzyskać zaktualizowanych wartości konfiguracji, ale późniejsze żądania otrzymają nowe wartości konfiguracji.

Uruchamianie aplikacji

  1. Uruchom ponownie serwer HTTP:

    node server.js
    
  2. Odwiedź http://localhost:3000 witrynę i sprawdź odpowiedź, która jest kluczem message w magazynie usługi App Configuration.

    Zrzut ekranu przedstawiający przeglądarkę z komunikatem z usługi App Configuration.

  3. Zaktualizuj następujące wartości klucza do magazynu konfiguracji aplikacja systemu Azure. Zaktualizuj wartość klucza message.

    Klawisz Wartość Etykieta Typ zawartości
    Komunikat Witaj, świecie — zaktualizowano! Pozostaw pole puste Pozostaw pole puste
  4. Po około 15 sekundach odśwież stronę przez wiele razy, a komunikat powinien zostać zaktualizowany.

    Zrzut ekranu przedstawiający przeglądarkę ze zaktualizowanym komunikatem z usługi App Configuration.

Czyszczenie zasobów

Jeśli nie chcesz nadal korzystać z zasobów utworzonych w tym artykule, usuń utworzoną tutaj grupę zasobów, aby uniknąć naliczania opłat.

Ważne

Usunięcie grupy zasobów jest nieodwracalne. Grupa zasobów i wszystkie zasoby w niej są trwale usuwane. Upewnij się, że nie usuniesz przypadkowo nieprawidłowej grupy zasobów ani zasobów. Jeśli zasoby dla tego artykułu zostały utworzone w grupie zasobów zawierającej inne zasoby, które chcesz zachować, usuń każdy zasób oddzielnie z odpowiedniego okienka zamiast usuwać grupę zasobów.

  1. Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
  2. W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
  3. Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
  4. Wybierz pozycję Usuń grupę zasobów.
  5. Zobaczysz prośbę o potwierdzenie usunięcia grupy zasobów. Wprowadź nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.

Po kilku chwilach grupa zasobów i wszystkie jej zasoby zostaną usunięte.

Następne kroki

W tym samouczku włączono aplikację JavaScript w celu dynamicznego odświeżania ustawień konfiguracji z aplikacja systemu Azure Configuration. Aby dowiedzieć się, jak używać tożsamości zarządzanej platformy Azure w celu usprawnienia dostępu do usługi aplikacja systemu Azure Configuration, przejdź do następnego samouczka.

Aby uruchomić pełną funkcję biblioteki dostawcy konfiguracji języka JavaScript, przejdź do następującego dokumentu.