Anropa eller utlös Logi Kap par genom att använda Azure Functions och Azure Service Bus

Du kan använda Azure Functions för att utlösa en Logic app när du behöver distribuera en långvarig lyssnare eller uppgift. Du kan till exempel skapa en funktion som lyssnar i i en Azure Service Bus kö och som omedelbart utlöser en Logic app som en push-utlösare.

Förutsättningar

Skapa en logikapp

I det här scenariot har du en funktion som kör varje Logic-app som du vill utlösa. Börja med att skapa en logisk app som börjar med en utlösare för HTTP-begäran. Funktionen anropar slut punkten när ett köat meddelande tas emot.

  1. Logga in på Azure Portaloch skapa en tom Logic-app.

    Om du inte har använt Logic Apps igen går du igenom snabb start: skapa din första Logic-app.

  2. Skriv http request i sökrutan. I listan utlösare väljer du alternativet när en HTTP-begäran tas emot .

    Välj utlösare

    Med utlösaren för förfrågningar kan du välja att ange ett JSON-schema som ska användas med meddelandet i kön. JSON-scheman hjälper Logic App Designer att förstå strukturen för indata och göra utmatningarna enklare att använda i ditt arbets flöde.

  3. Om du vill ange ett schema anger du schemat i rutan JSON-schema för begär ande text , till exempel:

    Ange JSON-schema

    Om du inte har ett schema, men du har ett exempel på en nytto Last i JSON-format, kan du generera ett schema från den nytto lasten.

    1. I utlösaren för begäran väljer du Använd exempel nytto last för att generera schemat.

    2. Under Ange eller klistra in en exempel-JSON-nyttolast anger du exempel nytto lasten och väljer sedan slutförd.

      Ange exempel på nytto Last

    Detta exempel på en nytto Last genererar detta schema som visas i utlösaren:

    {
       "type": "object",
       "properties": {
          "address": {
             "type": "object",
             "properties": {
                "number": {
                   "type": "integer"
                },
                "street": {
                   "type": "string"
                },
                "city": {
                   "type": "string"
                },
                "postalCode": {
                   "type": "integer"
                },
                "country": {
                   "type": "string"
                }
             }
          }
       }
    }
    
  4. Lägg till andra åtgärder som du vill köra efter att du har tagit emot Queue-meddelandet.

    Du kan till exempel skicka ett e-postmeddelande med Office 365 Outlook Connector.

  5. Spara din Logic app, som genererar återanrops-URL: en för utlösaren i den här Logic-appen. Senare använder du den här återanrops-URL: en i koden för Azure Service Bus Queue-utlösaren.

    Återanrops-URL: en visas i egenskapen http post URL .

    Återanrops-URL skapades för utlösaren

Skapa en funktion

Därefter skapar du funktionen som fungerar som utlösare och lyssnar på kön.

  1. Öppna och expandera din Function-app i Azure Portal, om den inte redan är öppen.

  2. Under namnet på din funktion i appen expanderar du Functions. I fönstret funktioner väljer du ny funktion.

    Expandera "Functions" och välj "ny funktion"

  3. Välj den här mallen baserat på om du har skapat en ny function-app där du valde .NET som körnings stack, eller om du använder en befintlig Function-app.

    • För nya Function-appar väljer du den här mallen: Service Bus köa utlösare

      Välj mall för ny function-app

    • För en befintlig Function-app väljer du den här mallen: Service Bus Queue trigger-C#

      Välj mall för befintlig Function-app

  4. Ange ett namn för utlösaren i rutan Azure Service Bus kön utlösare och konfigurera Service Bus anslutning för kön, som använder Azure Service Bus SDK OnMessageReceive() -lyssnare och välj skapa.

  5. Skriv en grundläggande funktion för att anropa den tidigare skapade Logic app-slutpunkten genom att använda Queue meddelandet som en utlösare. Innan du skriver din funktion bör du gå igenom följande överväganden:

    I det här exemplet används Task.Run metoden i asynkront läge. Mer information finns i asynkron programmering med async och await.

    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. Testa funktionen genom att lägga till ett Queue-meddelande med hjälp av ett verktyg som Service Bus Explorer.

    Logic app utlöser omedelbart när funktionen tar emot meddelandet.

Nästa steg