Configurer les tâches durables en appelant des workflows d’application logique avec Azure Functions
S’applique à : Azure Logic Apps (Consommation)
Lorsque vous devez déployer un écouteur ou une tâche durable, vous pouvez créer un workflow d’application logique qui utilise le déclencheur de requête, et fait appel à Azure Functions pour appeler ce déclencheur et exécuter le workflow.
Par exemple, vous pouvez créer une fonction qui écoute les messages arrivant dans une file d’attente Azure Service Bus. Lorsque cet événement se produit, la fonction appelle le déclencheur de requête, qui fonctionne comme un déclencheur d’émission (push) pour exécuter automatiquement le workflow.
Ce guide pratique montre comment créer un workflow d’application logique qui démarre avec le déclencheur de requête. Vous créez ensuite une fonction qui écoute une file d’attente Service Bus. Quand un message arrive dans la file d’attente, la fonction appelle le point de terminaison créé par le déclencheur de requête pour exécuter votre workflow.
Notes
Vous pouvez implémenter ce comportement à l’aide d’un workflow d’application logique Consommation ou Standard, mais cet exemple continue avec un workflow Consommation.
Prérequis
Un compte et un abonnement Azure. Si vous n’avez pas d’abonnement, créez un compte gratuit.
Un espace de noms Service Bus. Si vous n’avez pas d’espace de noms, créez d’abord votre espace de noms. Pour plus d’informations, consultez Présentation d’Azure Service Bus
Une application de fonction Azure, qui est un conteneur pour vos fonctions. Si vous n’avez pas encore d’application de fonction, commencez par créer une application de fonction, en veillant à sélectionner .NET pour la propriété Runtime stack.
Connaissances de base en création de flux de travail d’applications logiques. Pour plus d’informations, consultez Créer un exemple de workflow d’application logique Consommation dans Azure Logic Apps multilocataire.
Créer un workflow d’application logique
Dans le portail Azure, créez une application logique vide Consommation en sélectionnant le modèle Application logique vide.
Dans le concepteur qui s’est ouvert, sous la zone de recherche du concepteur, sélectionnez Intégré. Dans la zone de recherche, entrez requête.
Dans la liste des déclencheurs, sélectionnez le déclencheur nommé Quand une requête HTTP est reçue.
Avec le déclencheur Requête, vous pouvez éventuellement entrer un schéma JSON à utiliser avec le message de file d’attente. Les schémas JSON aident le concepteur à comprendre la structure des données d’entrée et facilitent l’utilisation des sorties dans votre workflow.
Pour spécifier un schéma, entrez-le dans la zone Schéma JSON du corps de la demande.
Si vous n’avez pas de schéma, mais un exemple de charge utile au format JSON, vous pouvez générer un schéma à partir de cette charge utile.
Dans le déclencheur de requête, sélectionnez Utiliser l’exemple de charge utile pour générer le schéma.
Sous Entrer ou coller un exemple de charge utile JSON, entrez votre exemple de charge utile, puis sélectionnez Terminé.
L’exemple de charge utile illustré plus haut génère le schéma suivant, qui apparaît dans le déclencheur :
{ "type": "object", "properties": { "address": { "type": "object", "properties": { "number": { "type": "integer" }, "street": { "type": "string" }, "city": { "type": "string" }, "postalCode": { "type": "integer" }, "country": { "type": "string" } } } } }
Sous le déclencheur, ajoutez toutes les autres actions que vous souhaitez utiliser pour traiter le message reçu.
Par exemple, ajoutez une action qui envoie un e-mail avec le connecteur Office 365 Outlook.
Enregistrez votre workflow d’application logique.
Cette étape génère l’URL de rappel pour le déclencheur de requête dans votre workflow. Vous utilisez ensuite cette URL de rappel dans le code pour le déclencheur de file d’attente Azure Service Bus. L’URL apparaît s’affiche dans la propriété HTTP POST URL.
Créer une fonction
Ensuite, créez la fonction qui écoute la file d’attente et qui appelle le point de terminaison sur le déclencheur de requête quand un message arrive.
Ouvrez votre application de fonction dans le portail Azure.
Dans le menu de navigation de l’application de fonction, sélectionnez Fonctions. Dans le volet Fonctions, sélectionnez Créer.
Sous Sélectionner un modèle, sélectionnez le modèle nommé Déclencheur de file d’attente Azure Service Bus. Quand vous voyez la section Détails du modèle, qui présente des options différentes selon le modèle sélectionné, entrez les informations suivantes :
Propriété Valeur Description Nouvelle fonction <function-name> Entrez un nom pour votre fonction. Connexion Service Bus <Service-Bus-connection> Sélectionnez Nouveau pour créer la connexion à la file d’attente Service Bus, qui utilise l’écouteur OnMessageReceive()
du SDK Service Bus.Nom de la file d’attente <nom-file d’attente> Entrez le nom de la file d’attente. Sélectionnez Créer lorsque vous avez terminé.
Le portail Azure affiche maintenant la page Vue d’ensemble de votre nouvelle fonction Déclencheur de file d’attente Azure Service Bus.
À présent, écrivez une fonction de base qui appelle le point de terminaison du workflow d’application logique que vous avez créé précédemment. Avant d’écrire la fonction, passez en revue les considérations suivantes :
Déclenchez la fonction en utilisant le message de la file d’attente.
En raison de la possibilité d’exécution simultanée de fonctions, de volumes élevés ou de charges lourdes, évitez d’instancier la classe HTTPClient avec l’instruction
using
et de créer directement des instances HTTPClient par requête. Pour plus d’informations, consultez Utiliser HttpClientFactory pour implémenter des requêtes HTTP résilientes.Si possible, réutilisez l’instance de clients HTTP. Pour plus d’informations, consultez la rubrique Gérer les connexions dans Azure Functions.
L’exemple suivant utilise la méthode
Task.Run
en mode asynchrone. Pour plus d’informations, consultez l’article Programmation asynchrone avec async et await. L’exemple utilise aussi le type de contenu de messageapplication/json
, mais vous pouvez le changer si nécessaire.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")); }
Tester le flux de travail d’une application logique
Pour les tests, ajoutez un message à la file d’attente Service Bus en effectuant les étapes suivantes ou en utilisant un autre outil :
Dans le portail Azure, ouvrez votre espace de noms Service Bus.
Dans le menu de navigation de l’espace de noms Service Bus, sélectionnez Files d’attente.
Sélectionnez la file d’attente Service Bus que vous avez précédemment liée à votre fonction par le biais d’une connexion Service Bus.
Dans le menu de navigation de la file d’attente, sélectionnez Service Bus Explorer et, dans la barre d’outils, sélectionnez Envoyer des messages.
Dans le volet Envoyer des messages, spécifiez le message à envoyer à la file d’attente Service Bus.
Ce message déclenche votre workflow d’application logique.