Azure ServiceBus ile Queues Nedir ?



Biliyorsunuz 8 senedir genel olarak servis mimari üzerine makaleler yazıyorum.

Bu sene artık Azure tarafına geçiş yaptım ve özellikle de Azure App Servis'leri üzerine makaleler de yayınlıyor olacağımı Temmuz ayında yazmıştım. Bu yazı da Azure Service Bus'ın kuyruk yapını anlatıyor ve ufak da olsa bir örnek ile geliştiriyor olacağız.

Hadi başlayalım o zaman. 

Öncelikle Azure Service Bus nedir ? Bunun bir tanımını yapmak gerekiyor değil mi ?

Azure Service Bus karşımızı Hybrid bir mesajlaşma entegrasyonu olarak karşımıza çıkıyor "MaaS". Kurumsal bulut mesajlaşmasını basitleştirilmiş bir hali. 

Bir veya daha fazlası çevrimdışı olduğunda bile, uygulamalar ve hizmetler arasında güvenilir bulut mesajlaşma servisine gereksinim duyduğunuzda, Azure Servis Sub'a güvenebilirsiniz. Biz bu hizmetin kuruk tarafı ile bu makalede ilgileniyor olacağız demiştik.

Peki bu yazıda neler yapacağız ?

Azure portalını kullanarak bir ServisBus hizmetini ve ad alanı oluşturacağız.

Azure portalı kullanarak bir ServiceBus Mesajlaşma kuyruğu oluşturacağız

Mesaj göndermek için bir konsol uygulaması yazacağız

Mesaj almak için bir konsol uygulaması yazacağız

Hadi başlayalım.

İlk olarak Azure Portala gidip bir namespace oluşturalım.

  1. New - Enterprice Integration ve ServiceBus'ı seçelim


Daha sonra karşımıza namespace, resourcegrup ve lokasyon bilgileri geliyor. Burada önemli olan Unique isimleri vermek.


Alanların doğruluğundan emin olduktan sonra Create diyerek servisimizi aktif hale getirebiliriz. Eğer isterseniz bu servisinizi Dashbord'a pinleyebilirsiniz. Daha sonradan hzılı bir şekilde yönetmek istediğiniz bütün hizmetleriniz için bunu yapmanızı öneririm.

Servisimiz ayağa kalktıktan sonra, bu hizmeti yönetecek kimlik bilgilerine ihtiyacımız olacak. 

  • Ad alanları listesinde, yeni oluşturulan ad alanı adını tıklatın.

  • İsim alanı blade'inde Paylaşımlı erişim ilkeleri'ni tıklayın.

  • Paylaşılan erişim ilkeleri blade'de, RootManageSharedAccessKey'i tıklayın.
Eğer daha önceden oluşturduğunuz bir Policy ve Key yok ise, sol menüden Shared Access Policy den ekleyebilirsiniz




Policy: RootManageSharedAccessKey blade'de, bağlantı dizesini daha sonra kullanmak üzere panoya kopyalamak için Bağlantı dizesi-birincil anahtar'ın yanındaki kopyalama düğmesini tıklatın. Bu değeri Not Defteri'ne veya başka bir geçici konuma yapıştırın.


Daha sonraki kullanım için birincil anahtarın değerini kopyalayıp geçici bir konuma yapıştırarak önceki adımları tekrarlayın.

Şimdi sıra geldi bir Queue oluşturmaya. 

Zaten bir Service Bus kuyruğunuz oluşturulduysa, Message to queue bölümüne atlayın.

Lütfen burada gösterildiği gibi önceden bir ServisBus ad alanı oluşturduğunuzdan emin olun.

Azure portalına giriş yapın.

Portalın sol gezinme bölmesinde, ServisBus'ı tıklayın (Eğer ServisBus'ı görmüyorsanız Diğer servisler'i tıklayın).
Quesue'yu oluşturmak istediğiniz ad alanını seçin. 



Bütün işlemler gerçekleştikten sonra Azure ServiceBus hizmetini kullanarak uygulamamız üzerinden mesaj gönderme işlemlerini yapabiliriz.

Makalemizin başında da belirttiğim gibi, bunun için bir Console uygulaması yapacağız ki beni tanıyanlar Console'ı çok sevdiğimi de iyi bilirler :)

Bunun için hemen bir Console Uygulaması açıyoruz ve geliştirmeye başlıyoruz. 
Uygulamamız açıldıktan sonra ilk olarak NuGet üzerinden AzureServiceBus'ı projemize dahil ediyoruz.


Daha sonrasında projemize Azure ServiceBus'ı kullanmak için ihtiyacımız olan namespace'i ekleyerek devam ediyoruz.

 using Microsoft.ServiceBus.Messaging;
Daha sonrasında Azure ServiceBus hizmetimize erişebilmek için gerekli olan ConnectionString bilgilerini Main metodu içeriisinde yazarak devam ediyoruz.

var connectionString = "<Size ait connection string>";
 var queueName = "<size ait queue ismi>";


 var client = QueueClient.CreateFromConnectionString(connectionString, queueName);
 var message = new BrokeredMessage("test message!");
 client.Send(message);

Kodlarımızı yazdıktan sonra, Azure Portal üzerinden aktif ettiğimiz ServiceBus hizmetimize gidip bir bakalım bekleyen bir mesaj var mı ?


Buraya kadar yaptığımız her şey aslında Azure'a mesaj göndermek ile ilgiliydi. Eğer her şey yolunda ise, gelen mesajları Azure ServiceBus üzerinden alacak Console uygulamasını da yazmaya başlayabiliriz ;)

Yine Yeni bir Console uygulaması açalım ve hızlı bir şekilde kodları yazmaya başlayalım.

Kullanacağımız Namespace aynı ve tekrar NuGet resmini eklemek istemediğim için buraya koymuyorum arkadaşlar.

using Microsoft.ServiceBus.Messaging;

Son olarak da Azure ServiceBus'da bulunan mesajı okuyacak, daha doğrusu CLienT'a indirecek komuzu yazalım.

 var connectionString = "";
 var queueName = "sizeaitqueueismi";

 var client = QueueClient.CreateFromConnectionString(connectionString, queueName);

 client.OnMessage(message =>
 {
   Console.WriteLine(String.Format("Message: {0}", message.GetBody<String>()));
   Console.WriteLine(String.Format("Messageid: {0}", message.MessageId));
 });

 Console.ReadLine();
Kodumuzu Run ettikten sonra, Azure Portal'dan kuyrukta bekleyen bir mesaj var mı kontrol edelim.



Evet işimiz bitti :)

Neler yaptık ?
ilk olarak Azure ServiceBus hizmetimizi oluşturduk ve daha sonrasında mesaj alıp göndermek için gerekli olan erişim ayarlarımızı yaptık. Sonrasında da fark ettiğiniz gibi çok az bir kod ile bütün işlemlerimizi tamamladık.

Aklınıza takılan bir şey olursa ne yapmanız gerektiğini biliyorsunuz ;)

Kolaygelsin.






Add comment


Blog Posts' Cloud