Esercitazione: Usare la configurazione dinamica in JavaScript
Questa esercitazione illustra come abilitare la configurazione dinamica nelle applicazioni JavaScript. L'esempio in questa esercitazione si basa sull'applicazione di esempio introdotta nella guida introduttiva a JavaScript. Prima di continuare, completare Creare un'app JavaScript con app Azure Configurazione.
Prerequisiti
- Completare la guida introduttiva Creare un'app JavaScript con app Azure Configurazione.
- Aggiornare il
@azure/app-configuration-provider
pacchetto alla versione 2.0.0 o successiva.
Aggiungere coppie chiave-valore
Aggiungere il valore chiave seguente all'archivio di configurazione app Azure. Per altre informazioni su come aggiungere valori chiave a un archivio usando il portale di Azure o l’interfaccia della riga di comando, andare a Creare un valore chiave.
Chiave | valore | Etichetta | Tipo contenuto |
---|---|---|---|
message | Salve, mondo! | Lasciare vuoto | Lasciare vuoto |
Applicazioni console
Negli esempi seguenti viene illustrato come usare i valori di configurazione aggiornabili nelle applicazioni console.
Scegliere le istruzioni seguenti in base al modo in cui l'applicazione utilizza i dati di configurazione caricati da Configurazione app, come Map
oggetto di configurazione o .
Caricare dati da Configurazione app
È possibile connettersi a Configurazione app usando Microsoft Entra ID (scelta consigliata) o un stringa di connessione. Il frammento di codice seguente illustra l'uso dell'ID Microsoft Entra. Usare DefaultAzureCredential per eseguire l'autenticazione nell'archivio Configurazione app. Durante il completamento dell'argomento di avvio rapido elencato nei prerequisiti, è già stato assegnato il ruolo lettore dati Configurazione app.
Aprire il file app.js e aggiornare la
load
funzione. Aggiungere unrefreshOptions
parametro per abilitare le opzioni di aggiornamento e configurare l'aggiornamento. La configurazione caricata verrà aggiornata quando viene rilevata una modifica nel server. Per impostazione predefinita, viene usato un intervallo di aggiornamento di 30 secondi, ma è possibile eseguirne l'override con larefreshIntervalInMs
proprietà .// Connecting to Azure App Configuration using endpoint and token credential const appConfig = await load(endpoint, credential, { // Enabling the dynamic refresh refreshOptions: { enabled: true } });
Nota
Se viene visualizzato l'errore "L'aggiornamento è abilitato ma non sono specificate impostazioni di controllo". Aggiornare il @azure/app-configuration-provider
pacchetto alla versione 2.0.0 o successiva.
La configurazione
refreshOptions
da sola non aggiornerà automaticamente la configurazione. È necessario chiamare ilrefresh
metodo per attivare un aggiornamento. Questa progettazione impedisce richieste non necessarie di Configurazione app quando l'applicazione è inattiva. È necessario includere la chiamata in cui si verifica l'attivitàrefresh
dell'applicazione. Questa operazione è nota come aggiornamento della configurazione guidata dall'attività. Ad esempio, è possibile chiamarerefresh
quando si elabora un messaggio in arrivo o un ordine o all'interno di un'iterazione in cui si esegue un'attività complessa. In alternativa, è possibile usare un timer se l'applicazione è sempre attiva. In questo esempio,refresh
viene chiamato in un ciclo a scopo dimostrativo. Anche se larefresh
chiamata non riesce per qualsiasi motivo, l'applicazione continuerà a usare la configurazione memorizzata nella cache. Verrà eseguito un altro tentativo quando l'intervallo di aggiornamento configurato è passato e larefresh
chiamata viene attivata dall'attività dell'applicazione. La chiamatarefresh
è un no-op prima che l'intervallo di aggiornamento configurato venga trascorso, quindi l'impatto sulle prestazioni è minimo anche se viene chiamato frequentemente.Aggiungere il codice seguente per eseguire il polling delle modifiche di configurazione dei valori chiave sorvegliati.
// 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 }
Ora il file app.js dovrebbe essere simile al frammento di codice seguente:
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);
Eseguire l'applicazione
Eseguire lo script:
node app.js
Verificare l'output:
Hello World!
Continua a stampare "Hello World!" in una nuova riga ogni 5 secondi.
Aggiornare i valori chiave seguenti all'archivio di configurazione app Azure. Aggiornare il valore della chiave
message
.Chiave valore Etichetta Tipo contenuto message Hello World - Aggiornato! Lasciare vuoto Lasciare vuoto Dopo l'aggiornamento dei valori, il valore aggiornato viene stampato dopo l'intervallo di aggiornamento.
Hello World - Updated!
Applicazione server
Nell'esempio seguente viene illustrato come aggiornare un server HTTP esistente per usare i valori di configurazione aggiornabili.
Creare un nuovo file javascript denominato
server.js
e aggiungere il codice seguente: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();
Eseguire lo script:
node server.js
Visitare
http://localhost:3000
e verrà visualizzata la risposta:
Caricare dati da Configurazione app
Aggiornare per usare Configurazione app e abilitare l'aggiornamento
server.js
dinamico: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());
Aggiornamento della configurazione basata su richiesta
Nella maggior parte dei casi, l'operazione di aggiornamento del provider di Configurazione app può essere considerata come no-op. Invierà solo richieste per controllare il valore in Configurazione app quando è trascorso l'intervallo di aggiornamento impostato.
È consigliabile implementare l'aggiornamento della configurazione guidata dalla richiesta per l'applicazione Web. L'aggiornamento della configurazione viene attivato dalle richieste in ingresso all'app Web. Se l'app non è inattiva, non verrà eseguito alcun aggiornamento quando non è presente alcuna richiesta in ingresso. Quando l'app è attiva, è possibile usare un middleware o un meccanismo simile per attivare la appConfig.refresh()
chiamata a ogni richiesta in ingresso all'applicazione.
Se una richiesta di Configurazione app per il rilevamento delle modifiche non riesce, l'app continuerà a usare la configurazione memorizzata nella cache. I nuovi tentativi di verificare la presenza di modifiche verranno eseguiti periodicamente mentre sono presenti nuove richieste in ingresso per l'app.
L'aggiornamento della configurazione viene eseguito in modo asincrono per l'elaborazione delle richieste in ingresso dell'app. Non blocca o rallenta la richiesta in ingresso che ha attivato l'aggiornamento. La richiesta che ha attivato l'aggiornamento potrebbe non ottenere i valori di configurazione aggiornati, ma le richieste successive otterranno nuovi valori di configurazione.
Eseguire l'applicazione
Riavviare il server HTTP:
node server.js
Visitare
http://localhost:3000
e verificare la risposta che rappresenta lamessage
chiave nell'archivio Configurazione app.Aggiornare i valori chiave seguenti all'archivio di configurazione app Azure. Aggiornare il valore della chiave
message
.Chiave valore Etichetta Tipo contenuto message Hello World - Aggiornato! Lasciare vuoto Lasciare vuoto Dopo circa 15 secondi, aggiornare la pagina per più volte e il messaggio deve essere aggiornato.
Pulire le risorse
Se non si vuole continuare a usare le risorse create in questo articolo, eliminare il gruppo di risorse creato qui per evitare addebiti.
Importante
L'eliminazione di un gruppo di risorse è irreversibile. Il gruppo di risorse e tutte le risorse in esso contenute vengono eliminati in modo permanente. Assicurarsi di non eliminare accidentalmente il gruppo di risorse o le risorse sbagliate. Se le risorse per questo articolo sono state create in un gruppo di risorse che contiene altre risorse che si vogliono mantenere, eliminare ogni risorsa singolarmente dal rispettivo riquadro anziché eliminare il gruppo di risorse.
- Accedere al portale di Azure e selezionare Gruppi di risorse.
- Nella casella Filtra per nome immettere il nome del gruppo di risorse.
- Nell'elenco dei risultati selezionare il nome del gruppo di risorse per visualizzare una panoramica.
- Selezionare Elimina gruppo di risorse.
- Verrà chiesto di confermare l'eliminazione del gruppo di risorse. Immettere il nome del gruppo di risorse per confermare e selezionare Elimina.
Dopo qualche istante, il gruppo di risorse e tutte le risorse che contiene vengono eliminati.
Passaggi successivi
In questa esercitazione è stato abilitato l'app JavaScript per aggiornare dinamicamente le impostazioni di configurazione da app Azure Configurazione. Per informazioni su come usare un'identità gestita di Azure per semplificare l'accesso a app Azure Configurazione, passare all'esercitazione successiva.
Per il rundown completo della funzionalità della libreria del provider di configurazione JavaScript, continuare con il documento seguente.