Azure Işlevleri 'ni ve Azure Service Bus kullanarak mantıksal uygulamaları çağırın veya tetikleyin

Uzun süre çalışan bir dinleyici veya görev dağıtmanız gerektiğinde, bir mantıksal uygulamayı tetiklemek için Azure işlevleri 'ni kullanabilirsiniz. Örneğin, Azure Service Bus kuyruğu üzerinde dinleme yapan bir işlev oluşturabilir ve bir mantıksal uygulamayı anında iletme tetikleyicisi olarak tetikleyebilirsiniz.

Önkoşullar

Mantıksal uygulama oluşturma

Bu senaryo için, tetiklemek istediğiniz her mantıksal uygulamayı çalıştıran bir işleviniz vardır. İlk olarak, bir HTTP istek tetikleyicisi ile başlayan bir mantıksal uygulama oluşturun. İşlevi, her bir kuyruk iletisi alındığında bu uç noktayı çağırır.

  1. Azure Portaloturum açın ve boş mantıksal uygulama oluşturun.

    Logic Apps 'e yeni başladıysanız hızlı başlangıç: ilk mantıksal uygulamanızı oluşturmakonusunu inceleyin.

  2. Arama kutusuna http request yazın. Tetikleyiciler listesinden BIR http isteği alındığında tetikleyiciyi seçin.

    Tetikleyiciyi seçin

    Istek tetikleyicisi ile isteğe bağlı olarak, kuyruk iletisiyle birlikte kullanılacak bir JSON şeması girebilirsiniz. JSON şemaları, Logic App Designer 'ın giriş verilerinin yapısını anlamasına yardımcı olur ve iş akışınızda, çıktıları sizin için daha kolay hale getirir.

  3. Bir şema belirtmek için, şemayı Istek GÖVDESI JSON şemasına girin, örneğin:

    JSON şeması belirt

    Bir şemanız yoksa ancak JSON biçiminde bir örnek yüküyle karşılaşırsanız, bu yükün bir şemasını oluşturabilirsiniz.

    1. Istek tetikleyicisinde, şema oluşturmak için örnek yük kullan' ı seçin.

    2. Örnek BIR JSON yükü girin veya yapıştırın bölümüne örnek yükünüzü girip bitti' yi seçin.

      Örnek yük girin

    Bu örnek yük, tetikleyicide görüntülenen bu şemayı oluşturur:

    {
       "type": "object",
       "properties": {
          "address": {
             "type": "object",
             "properties": {
                "number": {
                   "type": "integer"
                },
                "street": {
                   "type": "string"
                },
                "city": {
                   "type": "string"
                },
                "postalCode": {
                   "type": "integer"
                },
                "country": {
                   "type": "string"
                }
             }
          }
       }
    }
    
  4. Sıra iletisini aldıktan sonra çalıştırmak istediğiniz diğer eylemleri ekleyin.

    Örneğin, Office 365 Outlook Bağlayıcısı ile bir e-posta gönderebilirsiniz.

  5. Bu mantıksal uygulamadaki tetikleyici için geri çağırma URL 'sini üreten mantıksal uygulamanızı kaydedin. Daha sonra, Azure Service Bus kuyruğu tetikleyicisinin kodunda bu geri çağırma URL 'sini kullanırsınız.

    Geri çağırma URL 'si http post URL 'si özelliğinde görüntülenir.

    Tetikleyici için geri çağırma URL 'SI oluşturuldu

İşlev oluşturma

Sonra tetikleyici olarak davranan ve kuyruğu dinleyen işlevi oluşturun.

  1. Azure portal, zaten açık değilse, işlev uygulamanızı açın ve genişletin.

  2. İşlev uygulamanızın adı altında işlevler' i genişletin. İşlevler bölmesinde yeni işlev' ı seçin.

    "Işlevler" i genişletin ve "yeni işlev" ı seçin

  3. Çalışma zamanı yığını olarak .NET seçtiğiniz yeni bir işlev uygulaması oluşturup oluşturamayacağını veya var olan bir işlev uygulamasını kullandığınızı temel alarak bu şablonu seçin.

    • Yeni işlev uygulamaları için şu şablonu seçin: Service Bus kuyruğu tetikleyicisi

      Yeni işlev uygulaması için şablon seçin

    • Mevcut bir işlev uygulaması için şu şablonu seçin: Service Bus kuyruk tetikleyicisi-C#

      Mevcut işlev uygulaması için şablon seçin

  4. Azure Service Bus kuyruğu tetikleyicisi bölmesinde, Tetikleyiciniz için bir ad girin ve Azure Service Bus SDK dinleyicisini kullanan sıra için Service Bus bağlantısını ayarlayın OnMessageReceive() ve Oluştur' u seçin.

  5. Kuyruk iletisini tetikleyici olarak kullanarak, önceden oluşturulmuş mantıksal uygulama uç noktasını çağırmak için temel bir işlev yazın. İşlevinizi yazmadan önce şu hususları gözden geçirin:

    Bu örnek, Task.Run yöntemi zaman uyumsuz modda kullanır. Daha fazla bilgi için bkz. Async ve await Ile zaman uyumsuz programlama.

    using System;
    using System.Threading.Tasks;
    using System.Net.Http;
    using System.Text;
    
    // Can also fetch from App Settings or environment variable
    private static string logicAppUri = @"https://prod-05.westus.logic.azure.com:443/workflows/<remaining-callback-URL>";
    
    // Reuse the instance of HTTP clients if possible: https://docs.microsoft.com/azure/azure-functions/manage-connections
    private static HttpClient httpClient = new HttpClient();
    
    public static async Task Run(string myQueueItem, TraceWriter log) 
    {
       log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
       var response = await httpClient.PostAsync(logicAppUri, new StringContent(myQueueItem, Encoding.UTF8, "application/json")); 
    }
    
  6. İşlevi test etmek için, Service Bus Gezginigibi bir araç kullanarak bir kuyruk iletisi ekleyin.

    Mantıksal uygulama, işlev iletiyi aldıktan hemen sonra tetiklenir.

Sonraki adımlar