İlk bölümde Azure Portal üzerinden App Configuration servisi oluşturup, console uygulaması üzerinden konfigürasyon değerini çekmiştim. Ancak bu durumda değeri Azure Portal üzerinden değiştirirsem uygulamayı da yeniden başlatmam gerekecek. Bu çoğu (belki de her) zaman istediğimiz bir durum olmadığından, dinamik bir konfigürasyona ihtiyacımız var. Azure App Configuration, bize bu konuda 2 farklı seçenek sağlıyor.
- Poll model: Bu modelde konfigürasyon değerini aralıklarla servisten sorgulayarak bir güncelleme olduğunda yeni değeri alabiliyoruz.
- Push model: Bu modelde ise App Configuration Events kullanarak, event’leri Azure Event Grid‘e göndererek webhook, Azure Function ya da Service Bus topic kullanarak güncel değeri uygulamaya iletebiliyoruz.
Bu bölümde Poll model üzerinden bu işlemleri nasıl gerçekleştirebileceğimize basit bir console uygulaması üzerinden bakalım. Burada ilk bölümdeki örneğe ek olarak ConfigureRefresh methodu ile takip edeceğimiz değeri register edip, GetRefresher methodu ile IConfigurationRefresher tipindeki configurationRefresher değişkenini set ediyorum. Burada diğer önemli kısım ise poll işlemini yapacak olan TryRefreshAsync methodu, bunu da async olarak bir while döngüsü içerisine ekliyorum. Bu döngü içerisinde de 5 saniyelik aralıklarda bu methodu çağırarak bir değişiklik olup olmadığını kontrol ediyorum.
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration; var builder = new ConfigurationBuilder(); IConfigurationRefresher configurationRefresher = null; builder.AddAzureAppConfiguration(options => { options.Connect("Endpoint=https://mshowto-appconfig.azconfig.io;Id=***;Secret=***") .ConfigureRefresh(refresh => refresh.Register("mshowtoconsoleapp:settings:key1")); configurationRefresher = options.GetRefresher(); }); var config = builder.Build(); Task.Run(async () => { while (true) { Console.WriteLine($"Key1: {config["mshowtoconsoleapp:settings:key1"]}"); await configurationRefresher.TryRefreshAsync(); await Task.Delay(5000); } }).Wait();
Uygulamayı dotnet run ile çalıştırdıktan sonra terminal ekranında mevcut key1 değeri olan mshowtoconsoleapp-val1 değerini görüyorum (Resim-2). Uygulamayı kapatmadan Azure Portal üzerinden bu değeri mshowtoconsoleapp-val2 olarak değiştirip kaydediyorum (Resim-1).
Resim-1
Terminal ekranında kısa bir süre sonra mshowtoconsoleapp-val2 değerini görebiliyorum (Resim-2).
Resim-2
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
Azure App Configuration documentation | Microsoft Docs
NuGet Gallery | Microsoft.Extensions.Configuration.AzureAppConfiguration 5.0.0
TAGs: Azure, Yazılım Geliştiriciler için Azure, App Configuration, Azure App Configuration, Configuration, Azure Key Vault, .NET, Console App