Yazılım Geliştiriciler için Azure: Azure App Configuration – Bölüm 3
  1. Anasayfa
  2. Microsoft Azure

Yazılım Geliştiriciler için Azure: Azure App Configuration – Bölüm 3

0

2. bölümde dinamik konfigürasyon modellerinden Poll model’i bir örnek üzerinden açıklamıştım. Bu bölümde de Push model için bir örnek yapacağım. İlk olarak yeni bir Service Bus oluşturacağım. Azure Portal üzerinde Create a resource ekranında Integration sekmesinden erişebileceğiniz gibi arama çubuğu üzerinden de ulaşabilirsiniz (Resim-1).

Resim-1

Standart olarak name, location ve pricing tier değerlerini doldurup (networking kısmını pas geçerek) service bus’ı oluşturuyorum (Resim-2).

Resim-2

Service bus oluşturduktan sonra şimdi de Entities sekmesinden appconfig-topic adında yeni bir Topic oluşturuyorum (Resim-3).

Resim-3

Oluşturduğum topic altında da yine Entities altında yer alan Subscriptions sekmesine gidiyorum; appconfig-sub1 adında ve max delivery count değeri 3 olacak şekilde yeni bir subscription oluşturacağım (Resim-4).

Resim-4

Buraya kadar App Configuration ile ilgili bir işlem yapmadım, App Configuration sayfasında Events sekmesinden yeni bir event subscription ekleyerek devam edeceğim (Resim-5).

Resim-5

Burada mshowto-appconfig-eventsub ismini veriyorum ve event schema tipini de Event Grid Schema olarak bırakıyorum. Topic Details bölümünde System Topic Name olarak appconfig-systopic adını veriyorum. Event types olarak da Key-value modified ve Key-value deleted seçili olarak bırakıyorum. Son olarak da Endpoint details altında, Endpoint Type olarak Service Bus Topic seçip endpoint olarak yazının başında oluşturduğum service bus namespace ve service bus topic değerlerini seçiyorum.

Kod tarafına geçmeden önce Azure Portal üzerinden bir değere ihtiyacım olacak: Service bus connection string. Bunun için de oluşturduğum service bus ekranından, Settings altındaki Shared access policies sekmesine giderek RootManageSharedAccessKey’e tıklıyorum ve Primary Connection String değerini kopyalıyorum (Resim-6).

Resim-6

Azure Portal üzerindeki işlemleri tamamladım. Şimdi de daha önceki bölümde kullandığım console app üzerinde küçük bir ekleme yapacağım. Burada service bus connection string, service bus topic ve subscription name değerleri ile yeni bir SubscriptionClient objesi oluşturup bir event handler register ediyorum. Handler içerisinde de configurationRefresher.ProcessPushNotification methodu ile push notification ile aldığım mesajı işliyorum.

using Azure.Messaging.EventGrid;
using Microsoft.Azure.ServiceBus;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.AzureAppConfiguration;
using Microsoft.Extensions.Configuration.AzureAppConfiguration.Extensions;

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

var subscriptionClient = new SubscriptionClient(connectionString:"Endpoint=sb://mshowto-sbns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=***", 
                                                topicPath:"appconfig-topic", 
                                                subscriptionName:"appconfig-sub1");

subscriptionClient.RegisterMessageHandler(
    handler: (message, cancellationToken) =>
    {
        var eventGridEvent = EventGridEvent.Parse(BinaryData.FromBytes(message.Body));
        eventGridEvent.TryCreatePushNotification(out PushNotification pushNotification);
        configurationRefresher.ProcessPushNotification(pushNotification);

        return Task.CompletedTask;
    },
    exceptionReceivedHandler: (exceptionArgs) =>
    {
        Console.WriteLine($"{exceptionArgs.Exception}");
        return Task.CompletedTask;
    });

Task.Run(async () =>
{
    while (true)
    {
        Console.WriteLine($"Key1: {config["mshowtoconsoleapp:settings:key1"]}");

        await configurationRefresher.TryRefreshAsync();
        await Task.Delay(5000);
    }
}).Wait();

Uygulamayı çalıştırdıktan sonra, Azure Portal üzerinden App Configuration’a tanımladığım değeri değiştirdiğimde ise değeri kısa bir süre sonra başarılı bir şekilde okuyabildiğim görüyorum (Resim-7).

Resim-7

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

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, Event Grid, Service Bus, Service Bus Topic, Push Model

Bu İçeriğe Tepkin Ne Oldu?
  • 1
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Mert Yeter, lisans eğitimini Yıldız Teknik Üniversitesi'nde, yüksek lisans eğitimini ise Bahçeşehir Üniversitesi'nde tamamlamıştır. Yazılım dünyasına üniversitenin ilk yıllarında aldığı QBasic ile başlayan Mert, .NET ve SQL Server gibi Microsoft teknolojileri ile devam etmiş; yüksek lisans tezini ise Linux konusunda yapmıştır. Netaş ve Ziraat Teknoloji gibi sektörün önde gelen firmalarında C#, .NET, SQL Server, Cisco Contact Center ürünleri ve Linux üzerine çalışmış, bir çok firmaya da bu konularda danışmanlık vermiştir.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir