Бөлісу құралы:


Руководство. Использование динамической конфигурации в JavaScript

В этом руководстве описано, как включить динамическую конфигурацию в приложениях JavaScript. Пример в этом руководстве основан на примере приложения, представленного в кратком руководстве по JavaScript. Прежде чем продолжить, завершите создание приложения JavaScript с помощью Конфигурация приложений Azure.

Необходимые компоненты

Добавление ключевых значений

Добавьте следующее ключевое значение в хранилище Конфигурация приложений Azure. Дополнительные сведения о добавлении значений ключей в хранилище с помощью портал Azure или ИНТЕРФЕЙСА командной строки см. в разделе "Создание значения ключа".

Ключ значение Метка Content type
message Hello World! Оставьте пустым Оставьте пустым
sentinel 1 Оставьте пустым Оставьте пустым

Примечание.

Ключ sentinel — это ключ , который вы обновляете после завершения изменения всех остальных ключей. Приложение отслеживает ключ sentinel. При обнаружении изменения приложение обновляет все значения конфигурации. Этот подход помогает обеспечить согласованность конфигурации в приложении и сократить общее количество запросов, сделанных в хранилище Конфигурация приложений Azure, по сравнению с мониторингом всех ключей для изменений.

Перезагрузка данных из App Configuration

В следующих примерах показано, как использовать обновляемые значения конфигурации в консольных приложениях. Выберите следующие инструкции в зависимости от того, как приложение использует данные конфигурации, загруженные из Конфигурация приложений, в качестве Map объекта конфигурации или объекта конфигурации.

  1. Откройте файл app.js и обновите функцию load . refreshOptions Добавьте параметр для включения обновления и настройки параметров обновления. Загруженная конфигурация будет обновлена при обнаружении изменения на сервере. По умолчанию используется интервал обновления в 30 секунд, но его можно переопределить с refreshIntervalInMs помощью свойства.

    // Connecting to Azure App Configuration using connection string
    const settings = await load(connectionString, {
        // 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
        }
    });
    
  2. Настройка 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
    }
    
  3. Теперь файл app.js должен выглядеть следующим фрагментом кода:

    const sleepInMs = require("util").promisify(setTimeout);
    const { load } = require("@azure/app-configuration-provider");
    const connectionString = process.env.AZURE_APPCONFIG_CONNECTION_STRING;
    
    async function run() {
        // Connecting to Azure App Configuration using connection string
        const settings = await load(connectionString, {
            // 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);
    

Выполнение приложения

  1. Запустите скрипт:

    node app.js
    
  2. Проверьте выходные данные:

    Hello World!
    

    Он продолжает печатать "Hello World!" в новой строке каждые 5 секунд.

  3. Обновите следующие ключевые значения в хранилище Конфигурация приложений Azure. Сначала обновите значение ключа message , а затем sentinel.

    Ключ значение Метка Content type
    message Hello World - Обновлено! Оставьте пустым Оставьте пустым
    sentinel 2 Оставьте пустым Оставьте пустым
  4. После обновления значений обновленное значение выводится после интервала обновления.

    Hello World - Updated!
    

Очистка ресурсов

Если вы не планируете в дальнейшем использовать ресурсы, созданные при работе с этой статьей, удалите созданную группу ресурсов, чтобы избежать расходов.

Внимание

Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не те ресурсы или группу ресурсов. Если ресурсы для работы с этой статьей созданы в группе ресурсов, которая содержит другие нужные ресурсы, удалите каждый ресурс отдельно в соответствующей области ресурса, чтобы не удалять группу ресурсов.

  1. Войдите на портал Azure и выберитеГруппы ресурсов.
  2. Введите имя группы ресурсов в поле Фильтровать по имени.
  3. В списке результатов выберите имя группы ресурсов, чтобы просмотреть общие сведения.
  4. Выберите команду Удалить группу ресурсов.
  5. Подтвердите операцию удаления группы ресурсов. Введите имя группы ресурсов, которую необходимо удалить, и нажмите Удалить.

Через некоторое время группа ресурсов и все ее ресурсы будут удалены.

Следующие шаги

В этом руководстве вы включили приложение JavaScript для динамического обновления параметров конфигурации из Конфигурация приложений Azure. Чтобы узнать, как использовать управляемое удостоверение Azure для упрощения доступа к Конфигурация приложений Azure, перейдите к следующему руководству.