Einrichten zeitintensiver Aufgaben durch Aufrufen von Logik-App-Workflows mit Azure Functions

Gilt für: Azure Logic Apps (Verbrauch)

Wenn Sie eine/n zeitinsive/n Listener oder Aufgabe bereitstellen müssen, können Sie einen Logik-App-Workflow erstellen, der den Anforderungstrigger und Azure Functions verwendet, um diesen Trigger aufzurufen und den Workflow auszuführen.

Sie können beispielsweise eine Funktion erstellen, die auf Nachrichten lauscht, die in einer Azure Service Bus-Warteschlange eingehen. Wenn dieses Ereignis auftritt, ruft die Funktion den Anforderungstrigger auf, der als Pushtrigger funktioniert, um Ihren Workflow automatisch auszuführen.

In dieser Schrittanleitung wird gezeigt, wie Sie einen Logik-App-Workflow erstellen, der mit dem Anforderungstrigger beginnt. Anschließend erstellen Sie eine Funktion, die auf eine Service Bus-Warteschlange lauscht. Wenn eine Nachricht in der Warteschlange eingeht, ruft die Funktion den Endpunkt auf, der vom Anforderungstrigger erstellt wurde, um Ihren Workflow auszuführen.

Hinweis

Obwohl Sie dieses Verhalten entweder mit einem Verbrauchs- oder einem Standard-Logik-App-Workflow implementieren können, fährt dieses Beispiel mit einem Verbrauchsworkflow fort.

Voraussetzungen

Erstellen eines Logik-App-Workflows

  1. Erstellen Sie im Azure-Portal eine leere Verbrauchs-Logik-App, indem Sie die Vorlage Leere Logik-App auswählen.

  2. Nachdem der Designer geöffnet wurde, wählen Sie unter dem Suchfeld des Designers die Option Integriert aus. Geben Sie in das Suchfeld Anforderung ein.

  3. Wählen Sie aus der Triggerliste den Trigger mit dem Namen Wenn eine HTTP-Anforderung empfangen wird aus.

    Screenshot des Designers im Portal. Das Suchfeld enthält „HTTP-Anforderung“. Unter „Trigger“ ist „Beim Empfang einer HTTP-Anforderung“ hervorgehoben.

    Mit dem Anforderungstrigger können Sie optional ein JSON-Schema für die Verwendung mit der Warteschlangenmeldung eingeben. JSON-Schemas können dem Designer die Struktur der Eingabedaten verdeutlichen und erleichtern Ihnen die Verwendung der Ausgaben in Ihrem Workflow.

  4. Zum Angeben eines Schemas geben Sie das Schema im Feld JSON-Schema für Anforderungstext ein.

    Screenshot der Details eines HTTP-Anforderungstriggers. Ein Teil des JSON-Codes wird im Feld „JSON-Schema für Anforderungstext“ angezeigt.

    Wenn Sie kein Schema haben, jedoch über eine Beispielnutzlast im JSON-Format verfügen, können Sie aus dieser Nutzlast ein Schema generieren.

    1. Wählen Sie im Anforderungstrigger Beispielnutzlast zum Generieren eines Schemas verwenden aus.

    2. Geben Sie unter Geben oder fügen Sie eine JSON-Beispielnutzlast ein Ihre Beispielnutzlast ein, und wählen Sie dann Fertig aus.

      Screenshot der Details eines HTTP-Anforderungstriggers. Unter „JSON-Beispielnutzlast eingeben oder einfügen“ werden Nutzlastdaten angezeigt.

      Die oben dargestellte Beispielnutzlast generiert das folgende Schema, das im Trigger angezeigt wird:

      {
         "type": "object",
         "properties": {
            "address": {
               "type": "object",
               "properties": {
                  "number": {
                     "type": "integer"
                  },
                  "street": {
                     "type": "string"
                  },
                  "city": {
                     "type": "string"
                  },
                  "postalCode": {
                     "type": "integer"
                  },
                  "country": {
                     "type": "string"
                  }
               }
            }
         }
      }
      
  5. Fügen Sie unter dem Trigger alle anderen Aktionen hinzu, die Sie zum Verarbeiten der empfangenen Nachricht verwenden möchten.

    Beispielsweise können Sie eine Aktion hinzufügen, die E-Mails mit dem Office 365 Outlook-Connector sendet.

  6. Speichern Sie Ihren Logik-App-Workflow.

    Dieser Schritt generiert die Rückruf-URL für den Anforderungstrigger in Ihrem Workflow. Später verwenden Sie diese Rückruf-URL in dem Code für den Azure Service Bus-Warteschlangentrigger. Die Rückruf-URL kommt in der Eigenschaft HTTP POST URL vor.

    Screenshot der Details eines HTTP-Anforderungstriggers. Neben „HTTP POST URL“ wird eine URL angezeigt.

Erstellen einer Funktion

Erstellen Sie als Nächstes die Funktion, die auf die Warteschlange lauscht und den Endpunkt im Anforderungstrigger aufruft, wenn eine Nachricht eingeht.

  1. Öffnen Sie im Azure-Portal Ihre Funktions-App.

  2. Wählen Sie im Navigationsmenü der Funktions-App die Option Funktionen aus. Wählen Sie im Bereich Funktionen die Option Erstellen aus.

    Screenshot einer Funktions-App mit hervorgehobener Option „Funktionen“ im Menü der Funktions-App. Die Seite „Funktionen“ ist geöffnet, und „Erstellen“ ist hervorgehoben.

  3. Wählen Sie unter Vorlage auswählen die Vorlage mit dem Namen Azure Service Bus-Warteschlangentrigger aus. Nachdem der Abschnitt Vorlagendetails angezeigt wurde, in dem verschiedene Optionen auf Grundlage Ihrer Vorlagenauswahl angezeigt werden, geben Sie die folgenden Informationen an:

    Eigenschaft Wert BESCHREIBUNG
    Neue Funktion <function-name> Geben Sie einen Namen für Ihre Funktion ein.
    Service Bus-Verbindung <Service-Bus-connection> Wählen Sie Neu aus, um die Verbindung für Ihre Service Bus-Warteschlange einzurichten, die den Service Bus SDK-Listener OnMessageReceive() verwendet.
    Warteschlangenname <Warteschlangenname> Geben Sie den Namen für Ihre Warteschlange ein.

    Screenshot des Bereichs „Funktion erstellen“ mit hervorgehobenem „Azure Service Bus-Warteschlangentrigger“ und eingegebenen Vorlagenbeispieldetails.

  4. Wählen Sie Erstellen, wenn Sie fertig sind.

    Im Azure-Portal wird jetzt die Seite Übersicht für Ihre neue Azure Service Bus-Warteschlangentrigger-Funktion angezeigt.

  5. Schreiben Sie nun eine einfache Funktion, um den Endpunkt für den Logik-App-Workflow aufzurufen, den Sie zuvor erstellt haben. Überprüfen Sie vor dem Schreiben Ihrer Funktion die folgenden Punkte:

    Im folgenden Beispiel wird die Task.Run-Methode im asynchronen Modus verwendet. Weitere Informationen finden Sie unter Asynchrone Programmierung mit async und await. Das Beispiel verwendet außerdem den Nachrichteninhaltstyp application/json, doch Sie können diesen Typ nach Bedarf ändern.

    using System;
    using System.Threading.Tasks;
    using System.Net.Http;
    using System.Text;
    
    // Set up the URI for the logic app workflow. You can also get this value on the logic app's 'Overview' pane, under the trigger history, or from an 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. For more information, see https://learn.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")); 
    }
    

Testen Ihres Logik-App-Workflows

Zum Testen fügen Sie Ihrer Service Bus-Warteschlange mithilfe der folgenden Schritte oder eines anderen Tools eine Nachricht hinzu:

  1. Öffnen Sie im Azure-Portal Ihren Service Bus-Namespace.

  2. Wählen Sie im Navigationsmenü des Service Bus-Namespace die Option Warteschlangen aus.

    Screenshot eines Service Bus-Namespace. Im Navigationsmenü ist „Warteschlangen“ hervorgehoben.

  3. Wählen Sie die Service Bus-Warteschlange aus, die Sie zuvor mithilfe einer Service Bus-Verbindung mit Ihrer Funktion verknüpft haben.

  4. Wählen Sie im Navigationsmenü der Warteschlange Service Bus Explorer und dann auf der Symbolleiste Nachrichten senden aus.

    Screenshot einer Service Bus-Warteschlangenseite im Portal mit hervorgehobener Option „Nachrichten senden“. Im Navigationsmenü ist „Service Bus Explorer“ hervorgehoben.

  5. Geben Sie im Bereich Nachrichten senden die Nachricht an, die an Ihre Service Bus-Warteschlange gesendet werden soll.

    Diese Nachricht löst Ihren Logik-App-Workflow aus.

Nächste Schritte