Azure Service Bus Queue : Genel Bakış

Merhaba arkadaşlar,

Bu yazımda Azure Service Bus Queue ile ilgili bilgiler vermeye çalışacağım.

Brokered Messaging

Öncelikle Brokered Messaging kavramından bahsetmek isterim. Brokered Messaging altyapısında mesajlar güvenilir bir broker’da –broker’ı aracı olarak çevirebiliriz sanırım– saklanır. Broker, mesajları alacak olan consumer uygulamanın mesajları almaya hazır duruma gelinceye kadar saklar.

Bu mesajlaşma modeli sayesinde dağıtık uygulamalar birbiriyle bağlantılı olmadan çalışır, mesajlarını broker’a gönderir. Dağıtık sistemdeki cihazların birinin bakımı sırasında veya olası bir çökme durumunda bu durumdan tüm sistem etkilenmemiş olur.

Şimdi bir dağıtık uygulama örneği vermeye çalışacağım.

Uluslararası bir lojistik firması olduğumuzu düşünelim ve bize bağlı olan 1000 transport aracı var. Ve biz bu araçların konumlarını 10 saniyede bir almak istiyoruz.

Mevcut senaryoda göre 10 saniyede bir 1000 cihazdan veri alacağız. Bunları alınıp işlenmesi sunucuya çok büyük bir yük olacaktır.

Brokered Messaging modeli uygulandığında bu istekleri karşılayacak bir sunucunun bulunup bulunmaması önemli değildir, cihazların istekleri gönderdiklerinde bir yanıt almaları da şart değildir. Cihaz mesajını gönderir, ve bu mesajı birinin almadığını önemsemez. Herhangi bir yanıt da beklemez, çalışmasına devam eder.

Consumer uygulama –yani mesajları alacak olan uygulama– eğer hazır durumdaysa mesajları anlık olarak alır ve işler. Herhangi bir bakım veya bozulma durumunda ise kuyruktaki mesajlar zarar görmez, hazır olduğunda tekrar mesajları alıp işlemeye devam eder.

Azure Service Bus Queue

Service Bus’ta bulunan Queue’lar –bundan sonra kuyruk diyeceğim– biraz önce bahsettiğimiz bir brokered messaging gerçeklemesidir. Dağıtık uygulamalar tüm mesajlarını bir kuyruk yapısına gönderir. Hepimizin bildiği gibi kuyruklar FIFO – First in First out (İlk giren ilk çıkar) prensibine göre çalışır.

service-bus-queue

Yukarıdaki grafikte gördüğümüz gibi Message Sender: mesaj gönderen uygulama Azure Service Bus Namespace’imizde yer alan kuyruğa mesajları bırakır ve basitçe Message Receiver: mesajları alacak olan uygulama, consumer Queue’dan mesajları alır ve işler.

Queue’nun çalışma modeli gereği consumer uygulama mesajların gönderilme sırasına göre ilk gönderileni öncelikli olarak okur ve kuyruktan siler. (Dequeue)

Mesaj gönderen uygulama bir web sitesi, mobil uygulama veya servis olabilir. Aklınıza gelebilecek olan bütün teknolojileri kullanarak Azure Service Bus Queue’ya mesaj gönderip alabiliyoruz. Zira Azure Service Bus REST API destekliyor.

Azure Service Bus Namespace’i oluşturma

Azure Portal’ında soldaki menüden Service Bus bağlantısına tıklayın.

1

Burası Service Bus Namespace’lerimizi görebileceğimiz ve yönetebileceğimiz sayfadır. Açılan sayfadan Create New Namespace bağlantısına tıklayın.

Azure Service Bus Namespace oluşturma

Açılacak olan formda bizden

  1. Namespace ismi
  2. Bölge
  3. Tip 
  4. Tier* bilgileri isteniyor.

*Tier’ı abonelik pakedi olarak çevirebiliriz, fiyatlandırma ayrıntıları için: Azure Service Bus Fiyatlandırma

Type olarak Messaging‘i seçmemiz gerekiyor, Notification Hub’ı Push notification için kullanıyoruz. İleride bununla ilgili bir yazı yazarsam değinebilirim : ) Tier için ise Basic seçmemiz yeterli olacaktır. Formu gönderdikten yaklaşık 30 saniye sonra Service Bus Namespace’imiz kullanılabilir olacak.

Service Bus Queue Oluşturma

Service Bus Namespace’imiz oluşturulduktan sonra üzerine tıklayıp bu namespace’i yöneteceğimiz sayfaya ilerleyeceğiz.

3

Service Bus Namespace’imizi oluşturduk. Şimdi bir Queue oluşturmamız gerekiyor. Yönetim sayfasından Queues sekmesine gitmemiz gerekiyor.

4

Queues sekmesine gittiğimizde Queue’larımızı burada görüyor olacağız. Tabii ki henüz hiçbir queue oluşturmadığımız için burası boş gelecek. Yeni bir Queue oluşturmak için Create New Queue bağlantısına tıklayacağız.

5

Create New Queue bağlantısına tıkladığımızda karşımıza bir pencere açılacak ve Queue için bilgiler girmemiz istenecek.

6

  1. Queue Name
  2. Region
  3. Namespace

bilgilerini gireceğiz. Queue için bir isim seçtikten sonra Türkiyeye en yakın konum olan West Europe’u seçeceğiz. Namespace için de biraz önce oluşturduğumuz Namespace’i seçeceğiz ki zaten bunlar seçili gelecek. Ve formu gönderiyoruz. Birkaç saniye sonra Queue’muz kullanıma hazır olacak.

7

Artık mesaj göndermeye ve almaya hazırız.

Bu yazımda Azure Service Bus Queue’yu elimden geldiğince açıklamaya çalıştım. Örnek senaryolar vermeye çalıştım. Faydalı olması dileğiyle.

Şu yazımda Intel Edison üzerinden Azure Service Bus Queue’ya mesaj göndermekten ve C# Console Application’dan mesajları consume etmekten bahsettim: Intel Edison üzerinde Azure Service Bus Queue

Fazlasını Oku