Öğretici: Azure Işlevleri ve Azure Logic Apps kullanarak Azure Event Grid aracılığıyla alınan Azure Service Bus olaylarına yanıt vermeTutorial: Respond to Azure Service Bus events received via Azure Event Grid by using Azure Functions and Azure Logic Apps

Bu öğreticide, Azure Işlevleri ve Azure Logic Apps kullanarak Azure Event Grid aracılığıyla alınan Azure Service Bus olaylarına nasıl yanıt verileceğini öğreneceksiniz.In this tutorial, you learn how to respond to Azure Service Bus events that are received via Azure Event Grid by using Azure Functions and Azure Logic Apps. Aşağıdaki adımları uygulayın:You'll do the following steps:

  • Hata ayıklama ve Event Grid ilk olay akışını görüntülemek için bir test Azure işlevi oluşturun.Create a test Azure function for debugging and viewing the initial flow of events from the Event Grid.
  • Event Grid olaylarına göre Azure Service Bus iletileri almak ve işlemek için bir Azure işlevi oluşturun.Create an Azure function to receive and process Azure Service Bus messages based on Event Grid events.
  • Event Grid olaylarına yanıt vermek için bir mantıksal uygulama oluşturmaCreate a logic app to respond to Event Grid events

Service Bus, Event Grid, Azure Işlevleri ve Logic Apps yapıtları oluşturduktan sonra, aşağıdaki işlemleri yapabilirsiniz:After you create the Service Bus, Event Grid, Azure Functions, and Logic Apps artifacts, you do the following actions:

  1. Service Bus bir konuya ileti gönderin.Send messages to a Service Bus topic.
  2. Konunun aboneliklerinin bu iletileri aldığını doğrulayınVerify that the subscriptions to the topic received those messages
  3. Olaya abone olan işlevin veya mantıksal uygulamanın olayı aldığını doğrulayın.Verify that the function or logic app that subscribed for the event has received the event.

Service Bus ad alanı oluşturmaCreate a Service Bus namespace

Bu öğreticideki yönergeleri izleyin: hızlı başlangıç: Azure Portal kullanarak aşağıdaki görevleri yapmak için konuya bir Service Bus konu ve abonelik oluşturun :Follow instructions in this tutorial: Quickstart: Use the Azure portal to create a Service Bus topic and subscriptions to the topic to do the following tasks:

  • Premium Service Bus ad alanı oluşturun.Create a premium Service Bus namespace.
  • Bağlantı dizesini alın.Get the connection string.
  • Service Bus konu başlığı oluşturun.Create a Service Bus topic.
  • Konuya iki abonelik oluşturun.Create two subscriptions to the topic.

İleti göndermek için örnek bir uygulama hazırlamaPrepare a sample application to send messages

Service Bus konunuza ileti göndermek için herhangi bir yöntemi kullanabilirsiniz.You can use any method to send a message to your Service Bus topic. Bu yordamın sonundaki örnek kod, Visual Studio 2017 kullandığınızı varsayar.The sample code at the end of this procedure assumes that you're using Visual Studio 2017.

  1. GitHub azure-service-bus deposunu kopyalayın.Clone the GitHub azure-service-bus repository.

  2. Visual Studio’da \samples\DotNet\Microsoft.ServiceBus.Messaging\ServiceBusEventGridIntegration klasörüne gidin ve SBEventGridIntegration.sln dosyasını açın.In Visual Studio, go to the \samples\DotNet\Microsoft.ServiceBus.Messaging\ServiceBusEventGridIntegration folder, and then open the SBEventGridIntegration.sln file.

  3. MessageSender projesine gidin ve Program.cs öğesini seçin.Go to the MessageSender project, and then select Program.cs.

  4. Service Bus konu adınızı ve önceki adımdan aldığınız bağlantı dizesini girin:Fill in your Service Bus topic name and the connection string you got from the previous step:

    const string ServiceBusConnectionString = "YOUR CONNECTION STRING";
    const string TopicName = "YOUR TOPIC NAME";
    
  5. Service Bus konusuna test iletileri göndermek için programı derleyin ve çalıştırın.Build and run the program to send test messages to the Service Bus topic.

Azure 'da bir test işlevi ayarlamaSet up a test function on Azure

Tüm senaryonun üzerinde çalışmadan önce, en az bir küçük test işlevi ayarlayın ve bu, akan olayları gözlemlemek ve bunları izlemek için kullanabilirsiniz.Before you work through the entire scenario, set up at least a small test function, which you can use to debug and observe the events that are flowing. Aşağıdaki görevleri yapmak için Azure Portal ilk işlevinizi oluşturma makalesindeki yönergeleri izleyin:Follow instructions in the Create your first function in the Azure portal article to do the following tasks:

  1. Bir işlev uygulaması oluşturun.Create a function app.
  2. HTTP ile tetiklenen bir işlev oluşturun.Create an HTTP triggered function.

Ardından, aşağıdaki adımları uygulayın:Then, do the following steps:

  1. Ağaç görünümündeki işlevleri genişletin ve işlevinizi seçin.Expand Functions in the tree view, and select your function. İşlevin kodunu şu kodla değiştirin:Replace the code for the function with the following code:

    #r "Newtonsoft.Json"
    
    using System.Net;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Primitives;
    using Newtonsoft.Json;
    
    public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
        var content = req.Body;
        string jsonContent = await new StreamReader(content).ReadToEndAsync();
        log.LogInformation($"Received Event with payload: {jsonContent}");
    
        IEnumerable<string> headerValues;
        headerValues = req.Headers.GetCommaSeparatedValues("Aeg-Event-Type");
    
        if (headerValues.Count() != 0)
        {
            var validationHeaderValue = headerValues.FirstOrDefault();
            if(validationHeaderValue == "SubscriptionValidation")
            {
                var events = JsonConvert.DeserializeObject<GridEvent[]>(jsonContent);
                var code = events[0].Data["validationCode"];
                log.LogInformation("Validation code: {code}");
                return (ActionResult) new OkObjectResult(new { validationResponse = code });
            }
        }
    
        return jsonContent == null
            ? new BadRequestObjectResult("Please pass a name on the query string or in the request body")
            : (ActionResult)new OkObjectResult($"Hello, {jsonContent}");
    }
    
    public class GridEvent
    {
        public string Id { get; set; }
        public string EventType { get; set; }
        public string Subject { get; set; }
        public DateTime EventTime { get; set; }
        public Dictionary<string, string> Data { get; set; }
        public string Topic { get; set; }
    }
    
    
  2. Kaydet ve çalıştır’ı seçin.Select Save and run.

    İşlev uygulaması çıkışı

  3. İşlev URL 'Sini al ' ı seçin ve URL 'yi aklınızda yapın.Select Get function URL and note down the URL.

    İşlev URL 'sini al

Event Grid aracılığıyla işlev ve ad alanını bağlamaConnect the function and namespace via Event Grid

Bu bölümde, Azure portal kullanarak işlevini ve Service Bus ad alanını birbirine bağlamaktır.In this section, you tie together the function and the Service Bus namespace by using the Azure portal.

Azure Event Grid aboneliği oluşturmak için aşağıdaki adımları izleyin:To create an Azure Event Grid subscription, follow these steps:

  1. Azure portal ad alanına gidin ve ardından sol bölmedeki Olaylar' ı seçin.In the Azure portal, go to your namespace and then, in the left pane, select Events. Ad alanı pencereniz açılır ve sağ bölmede iki Event Grid aboneliği görüntülenir.Your namespace window opens, with two Event Grid subscriptions displayed in the right pane.

    Service Bus Olaylar sayfası

  2. Araç çubuğunda + olay aboneliği ' ni seçin.Select + Event Subscription on the toolbar.

  3. Olay aboneliği oluştur sayfasında, aşağıdaki adımları uygulayın:On the Create Event Subscription page, do the following steps:

    1. Abonelik için bir ad girin.Enter a name for the subscription.

    2. Uç nokta türüIçin Web kancası seçin.Select Web Hook for Endpoint Type.

      Service Bus Event Grid aboneliği

    3. Uç nokta seç' i seçin, Işlev URL 'sini yapıştırın ve Seçimi Onayla' yı seçin.Chose Select an endpoint, paste the function URL, and then select Confirm selection.

      İşlev-uç noktayı seçme

    4. Filtreler sekmesine geçin, daha önce oluşturduğunuz Service Bus konuya ilk aboneliğin adını girin ve ardından Oluştur düğmesini seçin.Switch to the Filters tab, enter the name of the first subscription to the Service Bus topic you created earlier, and then select the Create button.

      Olay abonelik filtresi

  4. Olay aboneliğini listede görtığınızdan emin olun.Confirm that you see the event subscription in the list.

    Listedeki olay aboneliği

Service Bus konuya ileti gönderinSend messages to the Service Bus topic

  1. Service Bus konusuna iletiler C# Gönderen .NET uygulamasını çalıştırın.Run the .NET C# application, which sends messages to the Service Bus topic.

    Konsol uygulaması çıkışı

  2. Azure işlevi uygulamanızın sayfasında işlevler' i genişletin, işlevinizigenişletin ve İzle' yi seçin.On the page for your Azure function app, expand Functions, expand your function, and select Monitor.

    Monitor işlevi

Azure İşlevleri’ni kullanarak ileti almaReceive messages by using Azure Functions

Önceki bölümde, basit bir test ve hata ayıklama senaryosuna baktınız ve olayların akışa alındığından emin oldunuz.In the preceding section, you observed a simple test and debugging scenario and ensured that events are flowing.

Bu bölümde, bir olay aldıktan sonra nasıl ileti alınacağını ve işleneceğini öğreneceksiniz.In this section, you'll learn how to receive and process messages after you receive an event.

Visual Studio 'dan bir işlev yayımlamaPublish a function from Visual Studio

  1. Açtığınız Visual Studio çözümünde (sbeventgridıntegration), sbeventgridıntegration projesinde ReceiveMessagesOnEvent.cs öğesini seçin.In the same Visual Studio solution (SBEventGridIntegration) that you opened, select ReceiveMessagesOnEvent.cs in the SBEventGridIntegration project.

  2. Aşağıdaki kodda Service Bus Bağlantı dizenizi girin:Enter your Service Bus connection string in the following code:

    const string ServiceBusConnectionString = "YOUR CONNECTION STRING";
    
  3. İşlevin Yayımlama profilini indirin:Download the publish profile for the function:

    1. İşlev uygulamanızı seçin.Select your function app.

    2. Henüz seçili değilse genel bakış sekmesini seçin.Select the Overview tab if it isn't already selected.

    3. Araç çubuğunda Yayımlama profilini al ' ı seçin.Select Get publish profile on the toolbar.

      İşlev için Yayımlama profili al

    4. Dosyayı projenizin klasörüne kaydedin.Save the file to your project's folder.

  4. Visual Studio’da SBEventGridIntegration öğesine sağ tıklayın ve Yayımla’yı seçin.In Visual Studio, right-click SBEventGridIntegration, and then select Publish.

  5. Yayımla sayfasında Başlat ' ı seçin.Select Start on the Publish page.

  6. Bir yayımlama hedefi seçin sayfasında, aşağıdaki adımları uygulayın ve profili içeri aktar' ı seçin.On the Pick a publish target page, do the following steps, select Import Profile.

    Visual Studio-profil Içeri aktarma düğmesi

  7. Daha önce indirdiğiniz Yayımlama profili dosyasını seçin.Select the publish profile file you downloaded earlier.

  8. Yayımla sayfasında Yayımla ' yı seçin.Select Publish on the Publish page.

    Visual Studio-Yayımla

  9. Yeni Azure işlevi Receiveiletionevent' i görtığınızdan emin olun.Confirm that you see the new Azure function ReceiveMessagesOnEvent. Gerekirse sayfayı yenileyin.Refresh the page if needed.

    Yeni işlevin oluşturulduğunu onaylayın

  10. Yeni işleve URL 'YI alın ve bu işlemi yapın.Get the URL to the new function and note it down.

Event Grid aboneliğiEvent Grid subscription

  1. Mevcut Event Grid aboneliğini Sil:Delete the existing Event Grid subscription:
    1. Service Bus ad alanı sayfasında, sol taraftaki menüden Olaylar ' ı seçin.On the Service Bus Namespace page, select Events on the left menu.
    2. Mevcut olay aboneliğini seçin.Select the existing event subscription.
    3. Olay aboneliği sayfasında Sil' i seçin.On the Event Subscription page, select Delete.
  2. Yeni işlev URL 'sini kullanarak bir Event Grid aboneliği oluşturmak için işlev ve ad alanını Event Grid aracılığıyla bağlama bölümündeki yönergeleri izleyin.Follow instructions in the Connect the function and namespace via Event Grid section to create an Event Grid subscription using the new function URL.
  3. Konuya ileti göndermek ve işlevi izlemek için, Service Bus Ileti gönderme bölümündeki yönergeleri izleyin.Follow instruction in the Send messages to the Service Bus topic section to send messages to the topic and monitor the function.

Logic Apps’i kullanarak ileti almaReceive messages by using Logic Apps

Aşağıdaki adımları izleyerek bir mantıksal uygulamayı Azure Service Bus ve Azure Event Grid bağlayın:Connect a logic app with Azure Service Bus and Azure Event Grid by following these steps:

  1. Azure portal bir mantıksal uygulama oluşturun.Create a logic app in the Azure portal.

    1. + Kaynak oluştur' u seçin, tümleştirme' i seçin ve ardından mantıksal uygulama' yı seçin.Select + Create a resource, select Integration, and then select Logic App.
    2. Mantıksal uygulama-oluştur sayfasında, mantıksal uygulama için bir ad girin.On the Logic App - Create page, enter a name for the logic app.
    3. Azure aboneliğinizi seçin.Select your Azure subscription.
    4. Kaynak grubuiçin var olanı kullan ' ı seçin ve daha önce oluşturduğunuz diğer kaynaklar (Azure işlevi, Service Bus ad alanı gibi) için kullandığınız kaynak grubunu seçin.Select Use existing for the Resource group, and select the resource group that you used for other resources (like Azure function, Service Bus namespace) that you created earlier.
    5. Mantıksal uygulamanın konumunu seçin.Select the Location for the logic app.
    6. Mantıksal uygulamayı oluşturmak için Oluştur ' u seçin.Select Create to create the logic app.
  2. Logic Apps tasarımcı sayfasında, Şablonlaraltında boş mantıksal uygulama ' yı seçin.On the Logic Apps Designer page, select Blank Logic App under Templates.

  3. Tasarımcıda aşağıdaki adımları uygulayın:On the designer, do the following steps:

    1. Event Gridarayın.Search for Event Grid.

    2. Kaynak olayı gerçekleştiğinde (Önizleme)-Azure Event Gridseçin.Select When a resource event occurs (preview) - Azure Event Grid.

      Logic Apps Tasarımcısı-Event Grid tetikleyiciyi Seç

  4. Oturum aç' ı seçin, Azure kimlik bilgilerinizi girin ve erişime izin ver' i seçin.Select Sign in, enter your Azure credentials, and select Allow Access.

  5. Kaynak olayı gerçekleştiğinde , aşağıdaki adımları uygulayın:On the When a resource event occurs page, do the following steps:

    1. Azure aboneliğinizi seçin.Select your Azure subscription.
    2. Kaynak türüiçin Microsoft. ServiceBus. Namespaces' i seçin.For Resource Type, select Microsoft.ServiceBus.Namespaces.
    3. Kaynak adıiçin Service Bus ad alanınızı seçin.For Resource Name, select your Service Bus namespace.
    4. Yeni parametre Ekle' yi seçin ve sonek filtresi' ni seçin.Select Add new parameter, and select Suffix Filter.
    5. Sonek filtresiiçin ikinci Service Bus konu aboneliğinizin adını girin.For Suffix Filter, enter the name of your second Service Bus topic subscription. Logic Apps Tasarımcısı-olay yapılandırmaLogic Apps Designer - configure event
  6. Tasarımcıda + yeni adım ' ı seçin ve aşağıdaki adımları uygulayın:Select + New Step in the designer, and do the following steps:

    1. Service Busarayın.Search for Service Bus.

    2. Listeden Service Bus seçin.Select Service Bus in the list.

    3. Eylemler listesinden iletileri al ' ı seçin.Select for Get messages in the Actions list.

    4. Bir konu aboneliğinden (Peek-kilit) Ileti al' ı seçin.Select Get messages from a topic subscription (peek-lock).

      Logic Apps Designer-iletileri al eylemi

    5. Bağlantı için bir adgirin.Enter a name for the connection. Örneğin: Konu aboneliğinden Iletiler alınve Service Bus ad alanını seçin.For example: Get messages from the topic subscription, and select the Service Bus namespace.

      Logic Apps Tasarımcısı-Service Bus ad alanını seçin

    6. RootManageSharedAccessKeyöğesini seçin.Select RootManageSharedAccessKey.

      Logic Apps Tasarımcısı-paylaşılan erişim anahtarını seçin

    7. Oluştur'u seçin.Select Create.

    8. Konuyu ve aboneliğinizi seçin.Select your topic and subscription.

      Logic Apps tasarımcı-Service Bus konu ve aboneliğinizi seçin

  7. + Yeni adım' ı seçin ve aşağıdaki adımları uygulayın:Select + New step, and do the following steps:

    1. Service Bus'ı seçin.Select Service Bus.

    2. Eylem listesinden bir konu aboneliğindeki Iletiyi doldurun ' ı seçin.Select Complete the message in a topic subscription from the list of actions.

    3. Service Bus konu başlığınıseçin.Select your Service Bus topic.

    4. Konunun ikinci aboneliğini seçin.Select the second subscription to the topic.

    5. Iletinin kilit belirteciiçin dinamik içerikten belirteci kilitle ' yi seçin.For Lock token of the message, select Lock Token from the Dynamic content.

      Logic Apps tasarımcı-Service Bus konu ve aboneliğinizi seçin

  8. Mantıksal uygulamayı kaydetmek için Logic Apps tasarımcısında araç çubuğundan Kaydet ' i seçin.Select Save on the toolbar on the Logic Apps Designer to save the logic app.

  9. Konuya ileti göndermek için, Service Bus Ileti gönderme bölümündeki yönergeleri izleyin.Follow instruction in the Send messages to the Service Bus topic section to send messages to the topic.

  10. Mantıksal uygulamanızın genel bakış sayfasına geçin.Switch to the Overview page of your logic app. Mantıksal uygulamanın, gönderilen iletiler için çalıştırmalar geçmişinde çalıştığını görürsünüz.You see the logic app runs in the Runs history for the messages sent.

    Logic Apps Designer-Logic App çalıştırmaları

Sonraki adımlarNext steps