Aracılığıyla paylaş


Öğretici: JavaScript'te dinamik yapılandırmayı kullanma

Bu öğreticide JavaScript uygulamalarınızda dinamik yapılandırmayı etkinleştirmeyi öğreneceksiniz. Bu öğreticideki örnek, JavaScript hızlı başlangıcında sunulan örnek uygulamayı temel alır. Devam etmeden önce Azure Uygulaması Yapılandırması ile JavaScript uygulaması oluşturma işlemini tamamlayın.

Önkoşullar

Anahtar-değer ekleme

Azure Uygulaması Yapılandırma deponuza aşağıdaki anahtar değerini ekleyin. Azure portalını veya CLI'yı kullanarak bir depoya anahtar-değer ekleme hakkında daha fazla bilgi için Anahtar-değer oluşturma bölümüne gidin.

Anahtar Değer Etiket İçerik türü
ileti Merhaba Dünya! Boş bırakın Boş bırakın

Konsol uygulamaları

Aşağıdaki örneklerde konsol uygulamalarında yenilenebilir yapılandırma değerlerinin nasıl kullanılacağı gösterilmektedir. Uygulamanızın Uygulama Yapılandırması'dan yüklenen yapılandırma verilerini bir Map veya bir yapılandırma nesnesi olarak nasıl tükettiğine bağlı olarak aşağıdaki yönergeleri seçin.

Uygulama Yapılandırması'dan veri yükleme

Microsoft Entra Id (önerilen) veya bağlantı dizesi kullanarak Uygulama Yapılandırması bağlanabilirsiniz. Aşağıdaki kod parçacığında Microsoft Entra Id kullanımı gösterilmektedir. Uygulama Yapılandırması deponuzda kimlik doğrulaması yapmak için DefaultAzureCredential kullanırsınız. Önkoşullarda listelenen hızlı başlangıcı tamamlarken, kimlik bilgilerinizi Uygulama Yapılandırması Veri Okuyucusu rolüne atamıştınız.

  1. app.js dosyasını açın ve işlevi güncelleştirinload. Yenilemeyi etkinleştirmek ve yenileme seçeneklerini yapılandırmak için bir refreshOptions parametre ekleyin. Sunucuda bir değişiklik algılandığında yüklenen yapılandırma güncelleştirilir. Varsayılan olarak, 30 saniyelik bir yenileme aralığı kullanılır, ancak özelliğiyle refreshIntervalInMs geçersiz kılabilirsiniz.

    // Connecting to Azure App Configuration using endpoint and token credential
    const appConfig = await load(endpoint, credential, {
        // Enabling the dynamic refresh
        refreshOptions: {
            enabled: true
        }
    });
    

    Not

    "Yenileme etkinleştirildi ancak izlenen ayar belirtilmemiş" hatasını alırsanız, lütfen paketi 2.0.0@azure/app-configuration-providergüncelleştirin.

    Tavsiye

    Yapılandırma değişikliklerini izleme hakkında daha fazla bilgi için bkz. Yapılandırma yenileme için en iyi yöntemler.

  2. Tek başına ayarlamak refreshOptions yapılandırmayı otomatik olarak yenilemez. Yenilemeyi tetiklemek için yöntemini çağırmanız refresh gerekir. Bu tasarım, uygulamanız boşta olduğunda gereksiz isteklerin Uygulama Yapılandırması engeller. Çağrıyı refresh uygulama etkinliğinizin gerçekleştiği yere eklemeniz gerekir. Bu, etkinlik temelli yapılandırma yenilemesi olarak bilinir. Örneğin, gelen bir iletiyi veya siparişi işlerken ya da karmaşık bir görev gerçekleştirdiğiniz yinelemenin içinde çağrı refresh yapabilirsiniz. Alternatif olarak, uygulamanız her zaman etkinse zamanlayıcı kullanabilirsiniz. Bu örnekte, refresh gösterim amacıyla bir döngüde çağrılır. Arama herhangi bir nedenle başarısız olsa refresh bile, uygulamanız önbelleğe alınmış yapılandırmayı kullanmaya devam eder. Yapılandırılan yenileme aralığı geçirildiğinde ve refresh çağrı uygulama etkinliğiniz tarafından tetiklendiğinde başka bir deneme yapılır. Çağrı refresh , yapılandırılan yenileme aralığı tamamlanmadan önce yapılan bir çalışma dışıdır, bu nedenle sık sık çağrılsa bile performans etkisi en düşük düzeyde olur.

    İzlenen anahtar-değerlerinin yapılandırma değişikliklerini yoklamak için aşağıdaki kodu ekleyin.

    // 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
    }
    
  3. Şimdi dosya app.js aşağıdaki kod parçacığı gibi görünmelidir:

    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);
    

Uygulamayı çalıştırma

  1. Betiğinizi çalıştırın:

    node app.js
    
  2. Çıktıyı Doğrula:

    Hello World!
    

    Her 5 saniyede bir yeni bir satıra "Merhaba Dünya!" yazdırmaya devam eder.

  3. Aşağıdaki anahtar değerlerini Azure Uygulaması Yapılandırma deposuna güncelleştirin. anahtarının messagedeğerini güncelleştirin.

    Anahtar Değer Etiket İçerik türü
    ileti Merhaba Dünya - Güncelleştirildi! Boş bırakın Boş bırakın
  4. Değerler güncelleştirildikten sonra, güncelleştirilmiş değer yenileme aralığından sonra yazdırılır.

    Hello World - Updated!
    

Sunucu uygulaması

Aşağıdaki örnekte, mevcut bir http sunucusunun yenilenebilir yapılandırma değerlerini kullanacak şekilde nasıl güncelleştirilecekleri gösterilmektedir.

  1. adlı server.js yeni bir JavaScript dosyası oluşturun ve aşağıdaki kodu ekleyin:

    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();
    
  2. Betiğinizi çalıştırın:

    node server.js
    
  3. Ziyaret http://localhost:3000 edin ve yanıtı görürsünüz:

    İleti içeren tarayıcının ekran görüntüsü.

Uygulama Yapılandırması'dan veri yükleme

  1. server.js Uygulama Yapılandırması kullanacak ve dinamik yenilemeyi etkinleştirecek şekilde güncelleştirin:

    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());
    

İstek temelli yapılandırma yenilemesi

Çoğu durumda, Uygulama Yapılandırması sağlayıcısının yenileme işlemi işlem yapılmaz olarak ele alınabilir. Yalnızca ayarladığınız yenileme aralığı süresi geçtiğinde Uygulama Yapılandırması değerini denetlemek için istekler gönderir.

Web uygulamanız için istek temelli yapılandırma yenilemesi uygulamanızı öneririz. Yapılandırma yenilemesi, web uygulamanıza gelen istekler tarafından tetiklenir. Uygulamanız boşta olduğunda, gelen istek olmadığında yenileme gerçekleşmez. Uygulamanız etkin olduğunda, uygulamanıza gelen her istekte çağrıyı appConfig.refresh() tetikleme amacıyla ara yazılım veya benzer bir mekanizma kullanabilirsiniz.

  • Değişiklik algılama için Uygulama Yapılandırması isteği başarısız olursa uygulamanız önbelleğe alınmış yapılandırmayı kullanmaya devam eder. Uygulamanıza yeni gelen istekler olduğunda, değişiklikleri denetlemeye yönelik yeni girişimler düzenli aralıklarla yapılır.

  • Yapılandırma yenilemesi, uygulamanızın gelen isteklerinin işlenmesiyle zaman uyumsuz olarak gerçekleşir. Yenilemeyi tetikleyen gelen isteği engellemez veya yavaşlatmaz. Yenilemeyi tetikleyen istek güncelleştirilmiş yapılandırma değerlerini alamayabilir, ancak sonraki istekler yeni yapılandırma değerleri alır.

Uygulamayı çalıştırma

  1. Http sunucunuzu yeniden başlatın:

    node server.js
    
  2. Uygulama Yapılandırması mağazanızdaki anahtar olan http://localhost:3000 yanıtı ziyaret edin message ve doğrulayın.

    Uygulama Yapılandırması'dan bir ileti içeren tarayıcının ekran görüntüsü.

  3. Aşağıdaki anahtar değerlerini Azure Uygulaması Yapılandırma deposuna güncelleştirin. anahtarının messagedeğerini güncelleştirin.

    Anahtar Değer Etiket İçerik türü
    ileti Merhaba Dünya - Güncelleştirildi! Boş bırakın Boş bırakın
  4. Yaklaşık 15 saniye sonra sayfayı birden çok kez yenileyin; ileti güncelleştirilmelidir.

    Uygulama Yapılandırması güncelleştirilmiş bir ileti içeren tarayıcının ekran görüntüsü.

Kaynakları temizleme

Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız ücretlerden kaçınmak için burada oluşturduğunuz kaynak grubunu silin.

Önemli

Silinen kaynak grupları geri alınamaz. Kaynak grubu ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. Bu makalenin kaynaklarını, saklamak istediğiniz diğer kaynakları içeren bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı ilgili bölmeden tek tek silin.

  1. Azure portalında oturum açın ve Kaynak grupları'nı seçin.
  2. Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
  3. Genel bir bakış görmek için sonuç listesinde kaynak grubu adını seçin.
  4. Kaynak grubunu sil'i seçin.
  5. Kaynak grubunun silinmesini onaylamanız istenir. Onaylamak için kaynak grubunuzun adını girin ve Sil'i seçin.

Birkaç dakika sonra kaynak grubu ve tüm kaynakları silinir.

Sonraki adımlar

Bu öğreticide JavaScript uygulamanızın yapılandırma ayarlarını Azure Uygulaması Yapılandırmasından dinamik olarak yenilemesini etkinleştirmişsiniz. Azure Uygulaması Yapılandırmasına erişimi kolaylaştırmak için Azure yönetilen kimliğini kullanmayı öğrenmek için sonraki öğreticiye geçin.

JavaScript yapılandırma sağlayıcısı kitaplığının tam özellik çalıştırması için aşağıdaki belgeye geçin.