Руководство. Использование динамической конфигурации в JavaScript
В этом руководстве описано, как включить динамическую конфигурацию в приложениях JavaScript. Пример в этом руководстве основан на примере приложения, представленного в кратком руководстве по JavaScript. Прежде чем продолжить, завершите создание приложения JavaScript с помощью Конфигурация приложений Azure.
Необходимые компоненты
- Завершите краткое руководство по созданию приложения JavaScript с помощью Конфигурация приложений Azure.
Добавление ключевых значений
Добавьте следующее ключевое значение в хранилище Конфигурация приложений Azure. Дополнительные сведения о добавлении значений ключей в хранилище с помощью портал Azure или ИНТЕРФЕЙСА командной строки см. в разделе "Создание значения ключа".
Ключ | значение | Метка | Content type |
---|---|---|---|
message | Hello World! | Оставьте пустым | Оставьте пустым |
sentinel | 1 | Оставьте пустым | Оставьте пустым |
Примечание.
Ключ sentinel — это ключ , который вы обновляете после завершения изменения всех остальных ключей. Приложение отслеживает ключ sentinel. При обнаружении изменения приложение обновляет все значения конфигурации. Этот подход помогает обеспечить согласованность конфигурации в приложении и сократить общее количество запросов, сделанных в хранилище Конфигурация приложений Azure, по сравнению с мониторингом всех ключей для изменений.
Перезагрузка данных из App Configuration
В следующих примерах показано, как использовать обновляемые значения конфигурации в консольных приложениях.
Выберите следующие инструкции в зависимости от того, как приложение использует данные конфигурации, загруженные из Конфигурация приложений, в качестве Map
объекта конфигурации или объекта конфигурации.
Вы можете подключиться к Конфигурация приложений с помощью идентификатора Microsoft Entra (рекомендуется) или строка подключения. В следующем фрагменте кода показано использование идентификатора Microsoft Entra. Для проверки подлинности в хранилище Конфигурация приложений используется defaultAzureCredential. Завершив краткое руководство, указанное в предварительных требованиях, вы уже назначили учетные данные роли чтения данных Конфигурация приложений.
Откройте файл app.js и обновите функцию
load
.refreshOptions
Добавьте параметр для включения обновления и настройки параметров обновления. Загруженная конфигурация будет обновлена при обнаружении изменения на сервере. По умолчанию используется интервал обновления в 30 секунд, но его можно переопределить сrefreshIntervalInMs
помощью свойства.// Connecting to Azure App Configuration using endpoint and token credential const settings = await load(endpoint, credential, { // Setting up to refresh when the sentinel key is changed refreshOptions: { enabled: true, watchedSettings: [{ key: "sentinel" }] // Watch for changes to the key "sentinel" and refreshes the configuration when it changes } });
Настройка
refreshOptions
только не будет автоматически обновлять конфигурацию. Необходимо вызватьrefresh
метод для активации обновления. Эта конструкция предотвращает ненужные запросы на Конфигурация приложений при простое приложения. Необходимо включитьrefresh
вызов, в котором происходит действие приложения. Это называется обновлением конфигурации на основе действий. Например, можно вызватьrefresh
при обработке входящего сообщения или заказа или внутри итерации, в которой выполняется сложная задача. Кроме того, можно использовать таймер, если приложение всегда активно. В этом примереrefresh
вызывается цикл для демонстрационных целей. Даже еслиrefresh
вызов завершается сбоем по какой-либо причине, приложение продолжит использовать кэшированную конфигурацию. Другая попытка будет выполнена, когда настроенный интервал обновления прошел, иrefresh
вызов активируется действием приложения. Вызовrefresh
— это no-op до истечения заданного интервала обновления, поэтому его влияние на производительность минимально, даже если оно часто вызывается.Добавьте следующий код для изменения конфигурации опроса отслеживаемых значений ключей.
// Polling for configuration changes every 5 seconds while (true) { await sleepInMs(5000); // Waiting before the next refresh await settings.refresh(); // Refreshing the configuration setting console.log(settings.get("message")); // Consume current value of message from a Map }
Теперь файл 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 settings = await load(endpoint, credential, { // Setting up to refresh when the sentinel key is changed refreshOptions: { enabled: true, watchedSettings: [{ key: "sentinel" }] // Watch for changes to the key "sentinel" and refreshes the configuration when it changes } }); // Polling for configuration changes every 5 seconds while (true) { await sleepInMs(5000); // Waiting before the next refresh await settings.refresh(); // Refreshing the configuration setting console.log(settings.get("message")); // Consume current value of message from a Map } } run().catch(console.error);
Выполнение приложения
Запустите скрипт:
node app.js
Проверьте выходные данные:
Hello World!
Он продолжает печатать "Hello World!" в новой строке каждые 5 секунд.
Обновите следующие ключевые значения в хранилище Конфигурация приложений Azure. Сначала обновите значение ключа
message
, а затемsentinel
.Ключ значение Метка Content type message Hello World - Обновлено! Оставьте пустым Оставьте пустым sentinel 2 Оставьте пустым Оставьте пустым После обновления значений обновленное значение выводится после интервала обновления.
Hello World - Updated!
Очистка ресурсов
Если вы не планируете в дальнейшем использовать ресурсы, созданные при работе с этой статьей, удалите созданную группу ресурсов, чтобы избежать расходов.
Внимание
Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не те ресурсы или группу ресурсов. Если ресурсы для работы с этой статьей созданы в группе ресурсов, которая содержит другие нужные ресурсы, удалите каждый ресурс отдельно в соответствующей области ресурса, чтобы не удалять группу ресурсов.
- Войдите на портал Azure и выберитеГруппы ресурсов.
- Введите имя группы ресурсов в поле Фильтровать по имени.
- В списке результатов выберите имя группы ресурсов, чтобы просмотреть общие сведения.
- Выберите команду Удалить группу ресурсов.
- Подтвердите операцию удаления группы ресурсов. Введите имя группы ресурсов, которую необходимо удалить, и нажмите Удалить.
Через некоторое время группа ресурсов и все ее ресурсы будут удалены.
Следующие шаги
В этом руководстве вы включили приложение JavaScript для динамического обновления параметров конфигурации из Конфигурация приложений Azure. Чтобы узнать, как использовать управляемое удостоверение Azure для упрощения доступа к Конфигурация приложений Azure, перейдите к следующему руководству.