Azure Functions ile Azure Service Bus Queue Birlikte Kullanımı

Azure Functions veya diğer adıyla Azure Function App Nedir?

Azure Functions, kısaca herhangi bir sanal makina oluşturmadan veya bir web uygulaması oluşturmak yada yayınlamak zorunda kalmadan, sunucusuz ortamlarda (serverless) kodlarımızın çalıştırılmasına olanak sağlayan bir Microsoft Azure bulut servisidir. Azure Functions ve Serverless App ile ilgili önümüzdeki günlerde bir makale yazmayı düşünüyorum. Notumuzu bir kenara bırakıp işlemlerimize devam edelim.

Bu makalemizde Azure functions (serverless) ile Azure Service Bus kuyruklarına mesaj ekleme veya kuyruktaki mesajları okuma işlemlerine değiniyor olacağız.
Senaryomuz; belirli periyotlarla otomatik olarak çalışan Azure Functions üzerinden Service Bus mesaj kuyruğuna mesaj göndermek şeklinde olacak.
Service Bus olarak daha önce oluşturduğumuz “yahyatest1” ,  kuyruk olarak ise “myqueue1” isimli mesaj/ileti kuyruğunu 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 ulaşabilirsiniz.

Bunun için öncelikle aşağıdaki adımları takip ederek bir tane Azure Function App oluşturuyoruz. Azure Portal üzerinde New / Compute / Function App seçenekleri tıklıyoruz.
01-azure-portal-new-azure-function-app

Bu adımlardan sonra Function App oluşturma penceresi gelecektir. Bilgileri aşağıdaki ekranda olduğu gibi doldurup en altta bulunan “Create” butonuna basarak oluşturma işlemine başlıyoruz.
02-azure-function-app-create

Şimdi Azure Function App oluşturma penceresindeki alanları açıklayalım.
App Name
: Function App e verilen tekil isim bilgisidir. Doğru bir isimlendirme verdiğinizde kutucuğun sağ tarafında yeşil ok ikonunu görmeniz gerekir.
Subscription: Azure abonelikleriniz.
Resource Group: Azure servisleriyle ilgili kaynak grubu. Servisleri gruplandırarak merkezi bir yerden yönetmenizi sağlar. Daha önce Azure Service Bus için kullandığımız kaynak grubunu seçiyoruz.
OS: İşletim sistemi.
Hosting Plan: Servisi barındırma planı.
Location: Servisin bulunduğu azure data center bölgesi. En yakın bölgeyi seçiyoruz.
Storage: Function App ile ilgili dosyaların barındırılacağı depolama birimi.
Application Insights: Function App ile ilgili olası durumları tespit ve teşhis etmeye yardımcı olan bir özellik.

Function App i oluşturduktan sonra sıra uygulama içerisinde kullanacağımız fonksiyonları oluşturmaya geldi. Bunun için portal üzerindeki sol taraftaki menüden “Function Apps” i seçiyoruz, listeden yeni oluşturduğumuz uygulamayı seçiyoruz. Eğer çok fazla uygulamanız varsa “Search” alanında ismi aratabilirsiniz. Daha sonra uygulama içerisindeki “Functions” menüsü üzerine mouse ile gelip “+” butonuna basıyoruz.

03-azure-function-app-selec

Karşımıza fonksiyon oluşturma ekranı gelecektir. Senaryomuza uygun şekilde “Timer” tetikleyiciyi seçiyoruz. Kodlama dilini C# olarak yapacağımız için “CSharp” ı seçip “Create this function” seçeneğini seçtikten sonra devam ediyoruz.

03-azure-function-app-functions-create

Karşımıza fonksiyon içerisindeki kodları içeren aşağıdaki kod ekranı çıkacaktır.

04-azure-function-app-timer-trigger

 

Function App içerisinde birden fazla fonksiyon oluşturulabilir. Biz şuan oluşturduğumuz “TimerTriggerCharp1” isimli fonksiyonumuzu seçiyoruz. Buradaki “Save” butonu yazdığımız kodları kaydetmeye, “Run” butonu ise fonksiyonumuzu çalıştırmayı sağlar. Varsayılan olarak aşağıdaki kod parçası ile birlikte iki adet parametre bulunmakta. Bunlar TimerInfo tipinde myTimer ve TraceWriter tipinde log değişkenleri.

using System;
public static void Run(TimerInfo myTimer, TraceWriter log)
{
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
}

Bu aşamadan sonra Service Bus kuyruğunu fonksiyonumuzun output una bind edip üçüncü bir parametre ile mesajlarımızı iletebileceğiz.

Azure Functions Output Binding İşlemi ve Service Bus Queue Kullanımı

05-azure-function-app-integrate-outputBu işlem için fonksiyonumuzun hemen altındaki “Integrate” menüsüne tıklayalım. Karşımıza fonksiyonumuzla ilgili farklı özellikler kazandırabileceğimiz Triggers, Inputs ve Outputs seçenekleri gelecektir. Burada Outputs sekmesinin altındaki “New Output” linkine tıklayıp, açılan listeden “Azure Service Bus” seçeneğini seçiyoruz. İşlemi tamamlamak için altta bulunan “Select” düğmesine basalım.

06-azure-function-app-output-binding-azure-service-bus

Bir sonraki ekranda Service Bus, mesaj kuyruğu (queue) ve output parametrelerinin tanımladığımız konfigurasyon penceresi açılacaktır. Aşağıdaki ekranda görüldüğü gibi adımları sırasıyla takip ederek gerekli işlemlerimizi tamamlayalım.

07-azure-function-app-output-binding-azure-service-bus-connection-message-type

Buradaki 4. adımdan sonra, ilk önce boş olan Service Bus Connection alanı otomatik olarak doldurulacaktır.

En son 7. adımdaki “Save” butonuna tıkladığımızda daha önce boş olan “Outputs” sekmesi altında artık yeni oluşturduğumuz binding ile fonksiyon parametre adı “outputSbMsg” birlikte aşağıdaki şekilde olduğu gibi görünecektir.

08-azure-function-app-output-binding-azure-service-bus-outputSbMsg

Buraya kadar tüm adımları başarılı bir şekilde uyguladığımıza göre artık Service Bus kuyruğuna mesaj göndermeyle ilgili kodlarımızı aşağıdaki şekilde düzenleyip “Save” butonuna basalım.

09-01-azure-function-app-send-message-azure-service-bus-queue-code

Bu aşamadan sonra ister “Run” butonuna basıp fonksiyonun hemen çalışmasını sağlayabiliriz veya kendine bırakıp 5 dk da bir çalışmasını bekleyebiliriz.
Timer trigger (zaman tetikleyici) çalışma süresini değiştirmek istediğimizde fonksiyonumuzun altındaki “Intgrate” menüsüne tıklayıp “Triggers” sekmesi altındaki ilgili “Timer (myTimer)” seçeneğini seçiyoruz. Karşımıza aşağıdaki ekran gelecektir.

11-azure-function-app-timer-trigger-schedule

Buradaki “Schedule” alanındaki “0 */5 * * * *” şeklindeki bilgileri aşağıdaki formatta güncelleyebiliyoruz.

Schedule ifadesi/formatı: {second} {minute} {hour} {day} {month} {day-of-week}

Son olarak Service Bus kuyruğuyla ilgili mesaj göndermeden önce ve mesaj gönderdikten sonraki karşılaştırması aşağıdaki şekilde.

09-azure-function-app-send-message-azure-service-bus-queue

Bir tane konsol uygulaması oluşturup kuyruktaki mesajları görüntüleyelim.

10-azure-function-app-receive-message-azure-service-bus-queue

Bir sonraki makalede görüşmek ümidiyle şimdilik hoşçakalın.

Yahya Sönmez

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

You may also like...

3 Responses

  1. 22 Ocak 2018

    […] 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 […]

  2. 30 Ocak 2018

    […] 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 […]

  3. 30 Ocak 2018

    […] Konumuzun parçası olan ve daha önce oluşturulan Service Bus ve Azure Functions hakkında makaleler; – Azure Service Bus ve Queue (kuyruk) oluşturma hakkında bilgi için: http://yahyasonmez.com/azure-service-bus-nedir-ve-queue-kuyruk-yonetimi-nasil-yapilir/ – Azure Functions ve Service Bus Queue (kuyruk) birlikte kullanımı hakkında bilgi için: http://yahyasonmez.com/azure-functions-ile-azure-service-bus-queue-birlikte-kullanimi/ […]

Bir cevap yazın

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