Руководство. Использование динамической конфигурации в JavaScript
В этом руководстве описано, как включить динамическую конфигурацию в приложениях JavaScript. Пример в этом руководстве основан на примере приложения, представленного в кратком руководстве по JavaScript. Прежде чем продолжить, завершите создание приложения JavaScript с помощью Конфигурация приложений Azure.
Необходимые компоненты
- Завершите краткое руководство по созданию приложения JavaScript с помощью Конфигурация приложений Azure.
-
@azure/app-configuration-provider
Обновите пакет до версии 2.0.0 или более поздней.
Добавление ключевых значений
Добавьте следующее ключевое значение в хранилище Конфигурация приложений Azure. Дополнительные сведения о добавлении значений ключей в хранилище с помощью портал Azure или ИНТЕРФЕЙСА командной строки см. в разделе "Создание значения ключа".
Ключ | значение | Метка | Content type |
---|---|---|---|
message | Hello World! | Оставьте пустым | Оставьте пустым |
Консольные приложения
В следующих примерах показано, как использовать обновляемые значения конфигурации в консольных приложениях.
Выберите следующие инструкции в зависимости от того, как приложение использует данные конфигурации, загруженные из Конфигурация приложений, в качестве Map
объекта конфигурации или объекта конфигурации.
Загрузка данных из Конфигурация приложений
Вы можете подключиться к Конфигурация приложений с помощью идентификатора Microsoft Entra (рекомендуется) или строка подключения. В следующем фрагменте кода показано использование идентификатора Microsoft Entra. Для проверки подлинности в хранилище Конфигурация приложений используется defaultAzureCredential. Завершив краткое руководство, указанное в предварительных требованиях, вы уже назначили учетные данные роли чтения данных Конфигурация приложений.
Откройте файл app.js и обновите функцию
load
.refreshOptions
Добавьте параметр для включения обновления и настройки параметров обновления. Загруженная конфигурация будет обновлена при обнаружении изменения на сервере. По умолчанию используется интервал обновления в 30 секунд, но его можно переопределить сrefreshIntervalInMs
помощью свойства.// Connecting to Azure App Configuration using endpoint and token credential const appConfig = await load(endpoint, credential, { // Enabling the dynamic refresh refreshOptions: { enabled: true } });
Примечание.
Если вы получите сообщение об ошибке "Обновление включено, но не заданы параметры просмотра". Обновите @azure/app-configuration-provider
пакет до версии 2.0.0 или более поздней.
Настройка
refreshOptions
только не будет автоматически обновлять конфигурацию. Необходимо вызватьrefresh
метод для активации обновления. Эта конструкция предотвращает ненужные запросы на Конфигурация приложений при простое приложения. Необходимо включитьrefresh
вызов, в котором происходит действие приложения. Это называется обновлением конфигурации на основе действий. Например, можно вызватьrefresh
при обработке входящего сообщения или заказа или внутри итерации, в которой выполняется сложная задача. Кроме того, можно использовать таймер, если приложение всегда активно. В этом примереrefresh
вызывается цикл для демонстрационных целей. Даже еслиrefresh
вызов завершается сбоем по какой-либо причине, приложение продолжит использовать кэшированную конфигурацию. Другая попытка будет выполнена, когда настроенный интервал обновления прошел, иrefresh
вызов активируется действием приложения. Вызовrefresh
— это no-op до истечения заданного интервала обновления, поэтому его влияние на производительность минимально, даже если оно часто вызывается.Добавьте следующий код для изменения конфигурации опроса отслеживаемых значений ключей.
// 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 }
Теперь файл app.js должен выглядеть следующим фрагментом кода:
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);
Выполнение приложения
Запустите скрипт:
node app.js
Проверьте выходные данные:
Hello World!
Он продолжает печатать "Hello World!" в новой строке каждые 5 секунд.
Обновите следующие ключевые значения в хранилище Конфигурация приложений Azure. Обновление значения ключа
message
.Ключ значение Метка Content type message Hello World - Обновлено! Оставьте пустым Оставьте пустым После обновления значений обновленное значение выводится после интервала обновления.
Hello World - Updated!
Серверное приложение:
В следующем примере показано, как обновить существующий http-сервер для использования обновляемых значений конфигурации.
Создайте файл javascript с именем
server.js
и добавьте следующий код: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();
Запустите скрипт:
node server.js
Посетите
http://localhost:3000
и увидите ответ:
Загрузка данных из Конфигурация приложений
Обновите Конфигурация приложений и включите динамическое
server.js
обновление: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());
Обновление конфигурации на основе запросов
В большинстве случаев операция обновления поставщика Конфигурация приложений может рассматриваться как no-op. Запросы будут отправляться только для проверки значения в Конфигурация приложений при прохождении заданного интервала обновления.
Рекомендуется реализовать обновление конфигурации на основе запросов для веб-приложения. Обновление конфигурации активируется входящими запросами к веб-приложению. Обновление не произойдет, если ваше приложение неактивно, если входящий запрос отсутствует. Если приложение активно, вы можете использовать по промежуточное по промежуточное слоя или аналогичный механизм для активации appConfig.refresh()
вызова при каждом входящем запросе к приложению.
Если запрос на Конфигурация приложений для обнаружения изменений завершается ошибкой, приложение продолжит использовать кэшированную конфигурацию. Новые попытки проверить наличие изменений будут периодически выполняться при наличии новых входящих запросов к приложению.
Обновление конфигурации выполняется асинхронно при обработке входящих запросов приложения. Она не будет блокировать или замедлять входящий запрос, который активировал обновление. Запрос, активировав обновление, может не получить обновленные значения конфигурации, но последующие запросы получат новые значения конфигурации.
Выполнение приложения
Повторно запустите http-сервер:
node server.js
Посетите
http://localhost:3000
и проверьте ответ, который является ключомmessage
в вашем хранилище Конфигурация приложений.Обновите следующие ключевые значения в хранилище Конфигурация приложений Azure. Обновление значения ключа
message
.Ключ значение Метка Content type message Hello World - Обновлено! Оставьте пустым Оставьте пустым Через 15 секунд обновите страницу несколько раз, а сообщение должно быть обновлено.
Очистка ресурсов
Если вы не планируете в дальнейшем использовать ресурсы, созданные при работе с этой статьей, удалите созданную группу ресурсов, чтобы избежать расходов.
Внимание
Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не те ресурсы или группу ресурсов. Если ресурсы для работы с этой статьей созданы в группе ресурсов, которая содержит другие нужные ресурсы, удалите каждый ресурс отдельно в соответствующей области ресурса, чтобы не удалять группу ресурсов.
- Войдите на портал Azure и выберитеГруппы ресурсов.
- Введите имя группы ресурсов в поле Фильтровать по имени.
- В списке результатов выберите имя группы ресурсов, чтобы просмотреть общие сведения.
- Выберите команду Удалить группу ресурсов.
- Подтвердите операцию удаления группы ресурсов. Введите имя группы ресурсов, которую необходимо удалить, и нажмите Удалить.
Через некоторое время группа ресурсов и все ее ресурсы будут удалены.
Следующие шаги
В этом руководстве вы включили приложение JavaScript для динамического обновления параметров конфигурации из Конфигурация приложений Azure. Чтобы узнать, как использовать управляемое удостоверение Azure для упрощения доступа к Конфигурация приложений Azure, перейдите к следующему руководству.
Для полного запуска функции библиотеки поставщиков конфигурации JavaScript перейдите к следующему документу.