Azure Logic Apps ve Azure Functions ile Azure Service Bus Birlikte Kullanımı (Serverless)

Bu yazımızda Azure Logic Apps ve Azure Functions ile Azure Service Bus ın birlikte nasıl kullanıldığını, basit bir senaryo üzerinden anlatmaya çalışacağız.

Senaryomuz ise aşağıdaki şekilde görüldüğü gibi Azure Functions ile Azure Service Bus kuyruğuna mesaj göndermek ve sonrasında Azure Logic Apps ile kuyruktaki mesajı alıp Office 365 aracılığıyla Gmail hesabımıza e-posta göndermek.
01-scenario-azure-functions-and-azure-service-bus-and-azure-logic-apps-send-mail-office-365-gmailYeni bir Service Bus veya Function App oluşturmak yerine daha önce oluşturduğumuz Azure Service Bus queue ve Azure Function App i kullanacağız.

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/

Yeni olarak sadece Azure Logic Apps oluşturup makalemiz için gerekli olan ihtiyaçlarımızı tamamlayalım. Bundan sonra ise her üç servisinde birlikte kullanımıyla ilgili işlemlerimize başlayalım.

Azure Logic Apps Oluşturma İşlemi

Bunun için aşağıdaki şekilde görünen adımları izleyelim. New / Enterprise Integratiıon / Logic Apps seçeneklerini tıklıyoruz.

01-new-enterprise-integration-logic-app

Karşımıza logic app oluşturma ekranı gelecektir. “Name” alanına istediğimiz ismi verelim. Subscription alanında daha önce oluşturduğumuz Azure Function ve Service Bus abonelikleri ile aynı olmasına dikkat edelim. Çünkü farklı aboneliklerdeki servisler birbirini göremeyecektir. Resource Group (Kaynak Grubu) alanında ise daha önce test için oluşturduğumuz “yahyatest1” isimli kaynak grubunu seçiyoruz. (Bunu seçmek zorunda değiliz, isterseniz farklı bir kaynak oluşturabilir veya seçebilirsiniz.) Location olarak yakın olan West Europe seçiyoruz. En altta bulunan “Create” butonuna basıp oluşturma işlemine başlıyoruz.

02-create-logic-app

Logic Apps oluşturma işlemi tamamlandığında sağ üst tarafta aşağıdaki şekilde uyarı penceresi belirecektir. Burada “Go to resource” butonuna basıp Logic App Designer sayfasına geçiş yapabiliriz. Yada Portal üzerinde sol taraftaki menüden “Logic Apps” seçip ismini aratıp bulabiliriz.

03-create-logic-app-deployment-succeeded

Tasarım sayfasında bizi aşağıdaki gibi bir ekran karşılayacaktır. İsterseniz hazır template seçebilirsiniz.

04-logic-app-start-with-a-common-trigger

Biz hazır template seçmek yerine, aşağıdaki şekilde görünen “Blank Logic App” tıklayıp, boş bir tane mantıksal uygulama oluşturuyoruz.

05-logic-app-template-blank-logic-app

Azure Logic Apps ve Azure Service Bus (Queue) Bağlantı İşlemleri

Logic Apps üzerinde Service Bus mesaj kuyruğundan mesajları okuyacağımızdan dolayı, tasarım sayfasında ilk aşamada “Service Bus” konnektörünü seçerek devam ediyoruz.

06-logic-app-designer-service-bus-connector

Daha önce oluşturulan Service Bus isimleri aşağıdaki şekilde listelenecektir. Listedeki “When a message is received in a queue (auto complete)” seçeneğini seçiyoruz. Burada hem otomatik olarak, hem de manual olarak mesaj kuyruğuna bağlantı işlemlerinin nasıl yapıldığını inceleyelim.
1. Yöntem (Otomatik Servis Bus Bağlantısı): Bunun için “Connection Name” alanına bağlantı adı bilgisi yazıldıktan sonra listede bulunan Service Bus ismi tıklanır.

07-service-bus-connector-when-a-message-is-received-in-aqueue-auto-complete

Bir sonraki ekranda “Service Bus Policy” seçilir. Bu politika ile “Listen”,  “Manage” ve “Send” işlemleri yapılabilmekte. Altta bulunan “Create” butonuna basarak otomatik bağlantı oluşturma işlemini tamamlayabiliriz.

08-service-bus-connector-rootmanageshared-access-key-listen-manage-send

2. Yöntem (Manual Srrvice Bus Bağlantısı): Manuel bağlantı yapabilmek için, öncelikle Service Bus içerisinde bulunan mesaj kuyruğunun “Connection String” bilgisine ihtiyacımız var. Aşağıdaki adımlardan oluşan işlem serisini takip edip, 6. adımda bağlantı adresini kopyalayıp bir yerde tutalım. “Primary  Connection String”  veya “Secondary Connection String” bizim için farketmiyor.

21-azure-service-bus-queue-shared-access-policies-connection-string

Service Bus bağlantı ekranındaki “Manually enter connection Information” (2. yöntem)  linki tıklanır. Açılan pencerede “”Coonection Name” alanında bağlantı adı tanımlayalım. Buradaki “Connection String” alanına ise daha önce kopyaladığımız mesaj kuyruğunun URL bilgisini yapıştırıyoruz. “Create” butonuna basıp devam ediyoruz.

09-service-bus-connector-manual-connection-string

Sonraki ekranda “Queue name” alanına mesaj kuyruğunun adını yazalım. “Queue type” alanından “Main” seçeneğini seçelim. Her iki dakikada bir mesaj kuyruğunda mesaj olup olmadığını kontrol edeceği için “Interval” alanına 2 bilgisini, “Frequency” alanında “Minute” alanında seçiyoruz. “Create” butonuna basıp Service Bus bağlantısını tamamlıyoruz.

Eğer yanlış Service Bus veya Queue konfigurasyonu yaptıysak bunu düzeltmek için “Change Connect” linkine tıklayıp işlemleri tekrar edebiliriz.

10-service-bus-connector-queue-name-change-connection


Azure Logic Apps ile Office 365 E-posta Gönderimi

Yukarıda Azure Function aracılığıyla Service Bus kuyruğuna aktarılan mesajları Logic App ile alma işlemini tamamladık. Bundan sonraki adımda aldığımız mesajları Office 365 hesabımız ile e-posta olarak gönderme işlemini yapıyoruz.
Bunun için “New step” (Yeni adım) / “Add an action” (bir aksiyon ekle) seçeneklerini tıklayalım.

11-azure-logic-app-new-step-add-an-action

Açılan pencerede “Office 365 Outlook” konnektörünü seçelim.

12-azure-logic-app-new-step-choise-an-action

Bir sonraki aşamada gönderme işlemi yapacağımız için “Search” (arama) alanına “Send” yazalım ve listedeki “Office 365 Outlook – Send an email” (bir e-posta gönder) seçeneğini seçelim.

13-azure-logic-app-office-365-outlook-send-an-email

Bu aşamada e-posta gönderebilmemiz için Office 365 hesabımızla kimlik doğrulaması yaparak bağlantı oluşturmamız isteniyor. “Sign in” butonuna basıyoruz. Oturum açma penceresinde ilgili hesabımızı seçerek bağlantı kurma işlemlerimizi tamamlıyoruz.

14-azure-logic-app-office-365-outlook-send-an-email-sign-inDaha önce oturum açtığımız için hesap bilgilerimiz varsayılan olarak geldi. Farklı bir hesap ile bağlantı kurmak için “Başka bir hesap kullan” seçeneğini seçip işlemlerimizi tamamlayabiliyoruz.

15-azure-logic-app-office-365-outlook-send-an-email-sign-in-choice-accountOturum açma işlemlerinden sonra karşımıza aşağıdaki şekilde olduğu gibi e-posta gönderme ekranı gelecektir.
To” alanına, göndermek istediğimiz hedef e-posta adresini,
Subject” alanına, e-posta konusunu,
Body” alanına, e-posta metnini yazalım, devamında mouse ile tıkladığımızda sağ tarafta olduğu gibi “Dynamic Content” ekleme penceresi gelecektir. Burada “When a message is received in a queue (auto complete)” yazısı altındaki “Content” (içerik) seçeneğini tıkladığımızda otomatik olarak “Body” alanına gelecektir. Kaldırmak istediğimizde ise “Content” in hemen sağındaki küçük “x” ikonuna tıklayabiliriz. Eğer Logic App üzerinde farklı veri kaynakları olsaydı sağ taraftaki dinamik content penceresinde liste halinde görünürdü.
From” alanına, kaynak e-posta adresini yazalım.
ve düz bir metin göndereceğimiz için “Is HTML” alanında, “No” seçeneğini seçelim. Eğer HTML bir içerik göndermek istersek “Yes” seçeneğini seçmemiz gerekiyor.

16-azure-logic-app-office-365-outlook-send-an-email-dynamic-content


Azure Functions + Azure Service Bus + Azure Logic Apps Test İşlemleri

Yukarıdaki geliştirme işlemlerimizi tamamladığımıza göre test etme aşamasına geçebiliriz.
Önce Azure Function App içerisindeki “TimerTriggerCharp1” isimli fonksiyonumuza girelim.  Sonra “Run” butonuna basarak çalıştıralım ve Service Bus kuyruğuna mesajımızın eklenmesini sağlayalım.

17-azure-functions-to-azure-service-bus-queue-message

2 dakika sonra Azure Logic Apps penceresindeki “Overview” seçeneğini seçelim. Buradaki “Run history” sekmesi altındaki listeden “Succeded” olan bir item seçelim. İlgili işlemin detay penceresi açılacaktır. Logic Apps üzerindeki adımlarımızın başarılı bir şekilde çalıştığını buradaki yeşil OK düğmelerinden anlayabiliyoruz. Hata olsaydı kırmızı bir şekilde görünecekti.

16-01-azure-logic-app-save-and-run

Sıra geldi e-postanın gelip gelmediğini test etmeye. Ben “To” alanına gmail adresimi yazmıştım. Bu yüzden gmail hesabımı açıp gelen posta kutusuna baktığımda aşağıdaki e-postayı görebildim. Başlık ve içerik alanında Logic App üzerindeki yazdıklarımız yer alıyor.

18-azure-logic-app-office365-send-email-to-gmail-accountBuraya kadar yapılan tüm adımlarımızın doğru bir şekilde gerçekleştirdiğimizi test sonucundan anlayabiliyoruz.

Logic App üzerindeki işlemin detayını görmek istersek ilgili aksiyona tıklıyoruz. Aşağıdaki şekilde “Inputs” ve “Outputs” işlemlerinde neler olduğunu görsel ekranlarda detaylı inceleyebiliriz. Burada “Show raw inputs” veya “Show raw outputs” düğmesine tıklarsak, arka planda çalışan kodları görmüş oluruz.

19-service-bus-connector-when-a-message-is-received-in-aqueue-auto-complete-inputs-outputs

20-azure-logic-app-office365-send-email-inputs-outputs

Şimdilik bu kadar bir sonraki makalemizde görüşmek dileğiyle.

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...

Bir Cevap Yazın

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