Tutorial: Uso de la configuración dinámica en JavaScript
En este tutorial, aprenderá a habilitar la configuración dinámica en las aplicaciones de JavaScript. El ejemplo de este tutorial se basa en la aplicación de ejemplo introducida en el inicio rápido de JavaScript. Antes de continuar, finalice Creación de una aplicación de JavaScript con Azure App Configuration.
Requisitos previos
- Finalice el inicio rápido Creación de una aplicación de JavaScript con Azure App Configuration.
Agregar pares de clave-valor
Agregue el siguiente par de clave-valor al almacén de Azure App Configuration. Para obtener más información sobre cómo agregar pares clave-valor a un almacén mediante Azure Portal o la CLI, vaya a Creación de un par clave-valor.
Clave | Value | Etiqueta | Tipo de contenido |
---|---|---|---|
message | Hola mundo | Dejar en blanco | Dejar en blanco |
sentinel | 1 | Dejar en blanco | Dejar en blanco |
Nota:
Una clave de Sentinel es una clave que se actualiza después de completar el cambio de todas las demás claves. La aplicación supervisa la clave de Sentinel. Cuando se detecta un cambio, la aplicación actualiza todos los valores de configuración. Este enfoque ayuda a garantizar la coherencia de la configuración de la aplicación y reduce el número total de solicitudes realizadas al almacén de Azure App Configuration, en comparación con la supervisión de los cambios en todas las claves.
Recarga de datos de App Configuration
En los ejemplos siguientes se muestra cómo usar valores de configuración actualizables en aplicaciones de consola.
Elija las instrucciones siguientes en función de cómo la aplicación consume los datos de configuración cargados desde App Configuration, ya sea como un Map
o un objeto de configuración.
Puede conectarse a App Configuration mediante Microsoft Entra ID (recomendado) o una cadena de conexión. El siguiente fragmento de código muestra cómo usar Microsoft Entra ID. Use DefaultAzureCredential para autenticarse en el almacén de App Configuration. Al completar el inicio rápido que se muestra en los requisitos previos, ya asignó a su credencial el rol de Lector de datos de App Configuration.
Abra el archivo app.js y actualice la función
load
. Agregue un parámetrorefreshOptions
para habilitar las opciones de actualización y configurar la actualización. La configuración cargada se actualizará cuando se detecte un cambio en el servidor. De forma predeterminada, se usa un intervalo de actualización de 30 segundos, pero puede invalidarlo con la propiedadrefreshIntervalInMs
.// 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 } });
La configuración de
refreshOptions
por sí sola no actualizará automáticamente la configuración. Debe llamar al métodorefresh
para desencadenar una actualización. Este diseño evita solicitudes innecesarias a App Configuration cuando la aplicación está inactiva. Debe incluir la llamadarefresh
en la que se produce la actividad de la aplicación. Esto se conoce como actualización de configuración controlada por actividad. Por ejemplo, puede llamar arefresh
al procesar un mensaje entrante o un pedido, o dentro de una iteración en la que se realiza una tarea compleja. Como alternativa, puede usar un temporizador si la aplicación siempre está activa. En este ejemplo, se llama arefresh
en un bucle con fines de demostración. Incluso si se produce un error en la llamada arefresh
por cualquier motivo, la aplicación seguirá usando la configuración almacenada en caché. Otro intento se realizará cuando se haya superado el intervalo de actualización configurado y la actividad de la aplicación desencadene la llamada arefresh
. Llamar arefresh
es una operación no operativa antes de que transcurre el intervalo de actualización configurado, por lo que su impacto en el rendimiento es mínimo incluso si se llama con frecuencia.Agregue el código siguiente para sondear los cambios de configuración de los valores de clave observados.
// 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 }
Ahora el archivo app.js debería tener un aspecto similar al siguiente fragmento de código:
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);
Ejecución de la aplicación
Ejecute el script:
node app.js
Compruebe la salida:
Hello World!
Sigue imprimiendo "¡Hola mundo!" en una nueva línea cada 5 segundos.
Actualice los siguientes pares de clave-valor en el almacén de Azure App Configuration. Actualice primero el valor de la clave
message
y, a continuación,sentinel
.Key Value Etiqueta Tipo de contenido message ¡Hola mundo: actualizado! Dejar en blanco Dejar en blanco sentinel 2 Dejar en blanco Dejar en blanco Una vez actualizados los valores, el valor actualizado se imprime después del intervalo de actualización.
Hello World - Updated!
Limpieza de recursos
Si no quiere seguir usando los recursos que se han creado en este artículo, elimine el grupo de recursos que creó aquí para evitar cargos.
Importante
La eliminación de un grupo de recursos es irreversible. El grupo de recursos y todos los recursos que contiene se eliminan permanentemente. Asegúrese de que no elimina por accidente el grupo de recursos o los recursos equivocados. Si creó los recursos para este artículo en un grupo de recursos que contenga los recursos que desee conservar, elimine cada recurso de forma individual desde su panel respectivo, en lugar de eliminar el grupo de recursos.
- Inicie sesión en Azure Portal y después seleccione Grupos de recursos.
- En el cuadro de texto Filtrar por nombre, escriba el nombre del grupo de recursos.
- En la lista resultados, seleccione el nombre del grupo de recursos para ver la información general.
- Seleccione Eliminar grupo de recursos.
- Se le pedirá que confirme la eliminación del grupo de recursos. Escriba el nombre del grupo de recursos para confirmar y seleccione Eliminar.
Transcurridos unos instantes, el grupo de recursos y todos sus recursos se eliminan.
Pasos siguientes
En este tutorial ha habilitado la aplicación de JavaScript para actualizar dinámicamente la configuración desde Azure App Configuration. Para aprender a usar una identidad administrada de Azure para simplificar el acceso a Azure App Configuration, vaya al siguiente tutorial.