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.
- Actualice el paquete de
@azure/app-configuration-provider
a la versión 2.0.0 o posterior.
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 |
Aplicaciones de consola
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.
Carga de datos desde App Configuration
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 appConfig = await load(endpoint, credential, { // Enabling the dynamic refresh refreshOptions: { enabled: true } });
Nota:
Si recibe el error: "La actualización está activada, pero no se especifica ninguna configuración vigilada.", actualice el @azure/app-configuration-provider
paquete a la versión 2.0.0 o posterior.
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) { 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 }
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 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);
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 el valor de la clave
message
.Clave Value Etiqueta Tipo de contenido message ¡Hola mundo: actualizado! 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!
Aplicación de servidor
En el ejemplo siguiente se muestra cómo actualizar un servidor HTTP existente para usar valores de configuración actualizables.
Cree un nuevo archivo javascript denominado
server.js
y agregue el siguiente código: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();
Ejecute el script:
node server.js
Visite
http://localhost:3000
y verá la respuesta:
Carga de datos desde App Configuration
Actualice
server.js
App Configuration y active la actualización dinámica: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());
Actualización de configuración controlada por solicitudes
En la mayoría de los casos, la operación de actualización del proveedor de App Configuration puede considerarse como un no operativa. Solo enviará solicitudes para comprobar el valor de App Configuration cuando se haya superado el tiempo de intervalo de actualización establecido.
Se recomienda implementar la actualización de configuración controlada por solicitudes para la aplicación web. La actualización de configuración se desencadena mediante las solicitudes entrantes a la aplicación web. No se producirá ninguna actualización si la aplicación está inactiva, cuando no hay ninguna solicitud entrante. Cuando la aplicación está activa, puedes usar un middleware o un mecanismo similar para desencadenar la appConfig.refresh()
llamada en cada solicitud entrante a la aplicación.
Si se produce un error en una solicitud de detección de cambios de App Configuration, la aplicación seguirá utilizando la configuración almacenada en la caché. Los nuevos intentos de buscar cambios se realizarán periódicamente mientras haya nuevas solicitudes entrantes a la aplicación.
La actualización de la configuración se produce de forma asincrónica con respecto al procesamiento de las solicitudes entrantes de la aplicación. No bloqueará ni ralentizará la solicitud entrante que desencadenó la actualización. Es posible que no se actualicen los valores de configuración de la solicitud que desencadenó la actualización, pero sí lo harán las solicitudes posteriores.
Ejecución de la aplicación
Vuelva a iniciar el servidor HTTP:
node server.js
Visite
http://localhost:3000
y compruebe la respuesta que es la clave en elmessage
almacén de App Configuration.Actualice los siguientes pares de clave-valor en el almacén de Azure App Configuration. Actualice el valor de la clave
message
.Clave Value Etiqueta Tipo de contenido message ¡Hola mundo: actualizado! Dejar en blanco Dejar en blanco Después de unos 15 segundos, actualice la página varias veces y el mensaje se debe actualizar.
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.
Para obtener la lista completa de características de la biblioteca del proveedor de configuración de JavaScript, consulte el siguiente documento.