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
Ein Azure-Konto und ein Azure-Abonnement. Sollten Sie noch kein Abonnement besitzen, erstellen Sie ein kostenloses Konto.
Einen Service Bus-Namespace. Wenn Sie keinen Namespace besitzen, erstellen Sie zunächst Ihren Namespace. Weitere Informationen finden Sie unter Was ist Azure Service Bus?.
Eine Funktions-App, bei der es sich um einen Container für Ihre Funktionen handelt. Wenn Sie keine Funktions-App besitzen, erstellen Sie zuerst Ihre Funktions-App, und stellen Sie sicher, dass Sie .NET als Laufzeitstapel-Eigenschaft auswählen.
Grundlegende Kenntnisse zum Erstellen von Logik-App-Workflows. Weitere Informationen finden Sie unter Erstellen eines Beispiels für einen Verbrauchs-Logik-App-Workflow in mehrmandantenfähigen Azure Logic Apps.
Erstellen eines Logik-App-Workflows
Erstellen Sie im Azure-Portal eine leere Verbrauchs-Logik-App, indem Sie die Vorlage Leere Logik-App auswählen.
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.
Wählen Sie aus der Triggerliste den Trigger mit dem Namen Wenn eine HTTP-Anforderung empfangen wird aus.
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.
Zum Angeben eines Schemas geben Sie das Schema im Feld JSON-Schema für Anforderungstext ein.
Wenn Sie kein Schema haben, jedoch über eine Beispielnutzlast im JSON-Format verfügen, können Sie aus dieser Nutzlast ein Schema generieren.
Wählen Sie im Anforderungstrigger Beispielnutzlast zum Generieren eines Schemas verwenden aus.
Geben Sie unter Geben oder fügen Sie eine JSON-Beispielnutzlast ein Ihre Beispielnutzlast ein, und wählen Sie dann Fertig aus.
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" } } } } }
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.
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.
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.
Öffnen Sie im Azure-Portal Ihre Funktions-App.
Wählen Sie im Navigationsmenü der Funktions-App die Option Funktionen aus. Wählen Sie im Bereich Funktionen die Option Erstellen aus.
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. 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.
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:
Lösen Sie die Funktion aus, indem Sie die Nachricht aus der Warteschlangennachricht verwenden.
Vermeiden Sie wegen möglicherweise gleichzeitig ausgeführter Funktionen, hoher Volumen oder starker Auslastungen das Instanziieren der HttpClient-Klasse mit der
using
-Anweisung sowie das direkte Erstellen von HttpClient-Instanzen pro Anforderung. Weitere Informationen finden Sie unter Verwenden von HttpClientFactory zum Implementieren robuster HTTP-Anforderungen.Wenn möglich, verwenden Sie die Instanz von HTTP-Clients wieder. Weitere Informationen finden Sie unter Verwalten von Verbindungen in Azure Functions.
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 Nachrichteninhaltstypapplication/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:
Öffnen Sie im Azure-Portal Ihren Service Bus-Namespace.
Wählen Sie im Navigationsmenü des Service Bus-Namespace die Option Warteschlangen aus.
Wählen Sie die Service Bus-Warteschlange aus, die Sie zuvor mithilfe einer Service Bus-Verbindung mit Ihrer Funktion verknüpft haben.
Wählen Sie im Navigationsmenü der Warteschlange Service Bus Explorer und dann auf der Symbolleiste Nachrichten senden aus.
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.