Azure Service Bus Nedir? Queue (Kuyruk) Yönetimi Nasıl Yapılır?

Azure Service Bus Nedir?

Azure-Service-Bus-IconKurumsal uygulamalarınız veya servisleriniz arasında veri iletişimini sağlayan, güvenlik düzeyi yüksek olan bir messaging as a service (MaaS) hybrid entegrasyon hizmetidir.

Kuyruk hizmeti FIFO (ilk giren ilk çıkar) yöntemiyle çalışır. Mimari yapısıyla on-premise veya bulut üzerindeki uygulamaları hibrid olarak çalışmasına altyapı sunar. Başarılı abonelik sistemi ile mesajların birbirinden izole edilmesini ve yönetilebilmesini kolaylaştırır. Mesajların kuyrukta kalma süreleri ve süre dolduğunda ne yapılacağı gibi işlemlerde kolaylıkla ayarlanabilmekte.

Azure Service Bus Oluşturma İşlemleri

Bunun için aşağıdaki şekilde olduğu gibi; Portal üzerindeki “New” / “Enterprise Integration” / “Service Bus” seçeneği seçilir.

01-new-enterprise-integration-service-bus

Aşağıdaki şekilde namespace oluşturma ekranı gelecektir. Buradaki;

Name: Service Bus adresi için kullanılan tekil isim bilgisi. Bilgilerin geçerli olması durumunda kutucukların sağ tarafında yeşil onay ikonları görülecektir.
Pricing Tier: Fiyatlandırma katmanı/yöntemi. (Şimdilik Basic tier seçiyoruz. İhtiyacımıza göre daha sonra yeniden yapılandırabiliriz.)
Subscription: Hesabınızla ilişkili Azure abonelikleriniz.
Resource Group: Kaynak grubu.
Location: Hizmetin yayınlanacağı Azure bölgesi. Kendimize en yakın bölgeyi seçmeye dikkat etmeliyiz.
02-service-bus-create-namespace

Fiyatlandırma katmanında şu anda Basic, Standard ve Premium seçenekleri mevcut. İhtiyacınıza göre istediğinizi seçebilirsiniz. 03-service-bus-choose-your-pricing-tier

Service Bus ın fiyatlandırma yöntemleri/katmanları arasındaki farklar temel olarak aşağıdaki şekilde. İleride değişiklik gösterebileceğinden dolayı, hizmeti kullanacağımız zaman kontrol etmekte fayda var.

ÖZELLİK BASIC STANDARD PREMİUM
Kuyruklar Var Var Var
Zamanlanan mesajlar Var Var Var
Konular Var Var
İşlemler Var Var
Yinelenenleri kaldırma Var Var
Oturumlar Var Var
ForwardTo/SendVia Var Var
İleti Boyutu 256 KB 256 KB 1 MB
Aracılı bağlantılar dahildir 100 1.0001 1.000 /MU
Aracılı bağlantılar (kapasite aşımına izin verilir) (faturalanabilir) En fazla 1.000/MU
Kaynak yalıtımı Var

Aralarındaki farkları kıyaslamak ve detaylı bilgi için https://azure.microsoft.com/tr-tr/pricing/details/service-bus/ sayfasını inceleyebilirsiniz.

Bilgileri yukarıdaki şekilde olduğu gibi doldurup devam ediyoruz.

Service Bus oluşturma işlemleri tamamlandığında portal üzerindeki sağ üst tarafta bildirim şeklinde görüntülenecektir.05-service-bus-created-notification

Bu adımdan sonra sol taraftaki menüden Service Bus seçeneği tıklanır ve oluşturulan service bus seçilir.

06-service-bus-select

Service Bus Mesaj Kuyruğu (Queue) Oluşturma İşlemleri

“yahyatest1” ismindeki service bus seçildikten sonra “Entities” başlığı altındaki “Queues” seçilir.  Açılan pencerede “Name” alanına tekil bir isim girilir. Diğer bilgiler aşağıdaki ekranda olduğu gibi girebilirsiniz. En altta bulunan “Create” butonuna basarak mesaj kuyruğu oluşturma işlemi tamamlanır.

07-service-bus-create-queue

Bu işlemden sonra şu anda “No queues yet” (henüz kuyruk yok) olarak görülen alanda “myqueue1” isimli mesaj kuyruğu yer alır.

Mesaj kuyruğu oluşturma penceresindeki alanları açıklayalım.

Name: Mesaj kuyruğu için verilen tekil isimdir. En fazla 260 karakter kullanılabilir. Büyük harf veya küçük harfe duyarlı değildir.
Max queue size: Mesaj kuyruğu için belirlenen  maksimum veri kapasitesidir. 1 GB ile 5 GB arasında herhangi bir değeri seçebilirsiniz.
Message time to live: Mesajın kuyruktaki yaşam süresidir. Gün-Saat-Dakika-Saniye cinsinden belirlenebilir. Alt limit ve üst limit fiyatlandırma katmanına göre farklılık gösterir. Bizim seçtiğimiz Basic Tier için; en az 00:00:01 ve en fazla 14.00:00:00 şeklindedir.
Lock duration: Bir mesajın/iletinin diğer alıcılar için kilitlendiği süredir. Yani kuyruktaki mesaj, bir alıcı tarafından çekilirken (varsayılan olarak 30 saniye) kilitlenir ve bu süre içerisinde diğer alıcılar tarafından o mesajın çekilmesine veya üzerinde işlem yapılmasına izin verilmez. En az 30 saniye, en fazla 5 dakika olarak belirlenebilir.
Enable duplicate detection: Tekrarlanan mesaj/ileti olup olmadığını denetleyen özelliktir.
Enable dead lettering on message expiration: Mesajın kuyruktaki yaşam süresi dolduğunda bunların taşınacağı ikincil bir alt kuyruk özelliğidir. Yani herhangi bir alıcıya teslim edilemeyen veya işlenemeyen mesajlar/iletiler varsa dead letter diye adlandırılan bu kuyruğa taşınır. Önemli bir konu olduğu için detaylı anlatımını ve kullanımını içeren başka bir makale yazmayı düşünüyorum.
Enable sessions: Kuyruğa gelen mesajların FIFO yöntemiyle ele alınmasını sağlayan özelliktir.
Enable partitioning: Kuyruğun parçalara bölünerek yönetilmesini sağlayan bir özelliktir. Bu özellik etkinleştirildiğinde her bir GB için, entity nin 16 kopyası/bölümü oluşturur.
Yani;
1 GB için => 1 x 16 = 16 GB
2 GB için => 2 x 16 = 32 GB
3 GB için => 3 x 16 = 48 GB
4 GB için => 4 x 16 = 64 GB
5 GB için => 5 x 16 = 80 GB lık bir kuyruk kapasitesi oluşur.
Dikkat ! kuyruğu oluşturduktan sonra bu özellik değiştirilemediğinden dolayı seçiminize özen göstermelisiniz.
Detaylı bilgi için https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-partitioning sayfasını inceleyebilirsiniz.

Mesaj/İleti kuyruğu oluştuktan sonra aşağıdaki şekilde görüntülenir.07-01-service-bus-created-queue-select

Service Bus Kuyruğuna (Queue) Mesaj Ekleme İşlemleri

Oluşturulan “myqueue1” isimli service bus kuyruğuna tıkladığınızda, genel bilgileri içeren bir infografik ekranı karşınıza gelir.
Buradaki “Active Message Count” bilgisi mevcut durumdaki mesaj/ileti sayısını göstermektedir.
“Queue URL” ise service bus kuyruğuna erişim için kullanacağımız https URL bilgisidir. Mouse ile üzerine geldiğiniz kopyalama imkanı verir.
Şimdilik bu URL bilgisini kopyalayıp bir yerde tutalım. “https://yahyatest1.servicebus.windows.net/myqueue1”

08-service-bus-queue-overview

Service Bus kuyruğuna mesaj gönderip alabilmek için “Settings” altındaki “Shared Access Policies” menüsüne tıklayıp devamında “Add” butonuna basalım.
Açılan pencerede “Policy Name” alanına “RESTPolicy” şeklinde tekil bir isim verelim. Hem mesaj gönderme hem de mesaj alma işlemi yapacağımız için “Manage” etiketinin yanındaki kutucuğu işaretleyelim.
Eğer sadece mesaj gönderme işlemi yapılacaksa “Send” kutucuğu işaretlenir veya sadece mesaj okuma işlemi yapılacaksa “Listen” kutucuğu işaretlenir. Alttaki “Create” butonuna basıp policy mizi oluşturalım.

09-service-bus-queue-shared-access-policies

Sistem tarafından otomatik olarak oluşturulan Policy bilgilerini görebilmek için, oluşturulan “RESTPolicy” seçilir. Açılan pencerede “Primary Key” alanındaki bilgileri kopyalayıp bir yere kaydedelim.

09--01-service-bus-queue-shared-access-policies-primary-key--copy

HTTP üzerinden mesaj/ileti göndermek için aşağıdaki tabloya göre işlemler gerçekleştirilebilir.

Method Request URI HTTP Version
POST http{s}://{serviceNamespace}.servicebus.windows.net/{queuePath|topicPath}/messages HTTP/1.1

Azure Service Bus ve Kuyruk (Queue) Bilgilerinin Monitör Edilmesi/Raporlanması

Service Bus Mesaj gönderme işlemlerinden sonra Service Bus genel kullanımıyla ilgili bilgileri aşağıdaki şekilde monitör edilebilmektedir. Bunun için oluşturduğumuz service bus ı “yahyatest1” seçtikten sonra “Overview” menüsü tıklanır. Eğer daha detaylı bilgilere ihtiyacımız olursa “Metrics” menüsü seçilerek, gerekli filtreleme işlemleri yapılabilir.

09-02-service-bus-overview

Aynı şekilde Service Bus kuyruğu (queue) kullanımıyla ilgili bilgilere ulaşmak içinde “Queues” altındaki ilgili kuyruk seçilir. Daha sonra “Overview” seçeneği tıklanır. Daha detaylı bilgilere ihtiyacımız olduğunda “Metrics” menüsü seçilir.

09-03-service-bus-queue-overview

Azure Functions aracılığıyla Azure Service Bus kuyruğuna mesaj/ileti ekleme konusundaki yazıya http://yahyasonmez.com/azure-functions-ile-azure-service-bus-queue-birlikte-kullanimi/ sayfasından ulaşabilirsiniz.

Umarım faydalı olmuştur. Bir sonraki makale buluşmak dileğiyle. Hoşçakalın.

Yahya Sönmez

Enterprise Integration - Azure Logic Apps - Azure Functions - Azure API Management - BizTalk Server - Azure Service Bus - Azure SQL - Asp.NET teknolojileri kullanarak web tabanlı kurumsal projeler geliştirmekte. Şuan serverless teknolojilerle birlikte hybrid mimari yapıları üzerine çalışmakta.

You may also like...

2 Responses

  1. 21 Ocak 2018

    […] kullanıyor olacağız. Azure Service Bus ve (queue) kuyruk oluşturmayla ilgili yazıya http://yahyasonmez.com/azure-service-bus-ve-queue-kuyruk-yonetimi/ sayfasından […]

  2. 27 Ocak 2018

    […] makaleler; – Azure Service Bus ve Queue (kuyruk) oluşturma hakkında bilgi için: http://yahyasonmez.com/azure-service-bus-ve-queue-kuyruk-yonetimi/ – Azure Functions ve Service Bus Queue (kuyruk) birlikte kullanımı hakkında bilgi […]

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir