Envoyer, recevoir et traiter par lots des messages dans Azure Logic AppsSend, receive, and batch process messages in Azure Logic Apps

Pour envoyer et traiter ensemble des messages sous la forme spécifique de groupes, vous pouvez créer une solution de traitement par lots qui collecte les messages dans un lot jusqu’à ce que vos critères précisés soient remplis pour la mise en production et le traitement des messages mis en lots.To send and process messages together in a specific way as groups, you can create a batching solution that collects messages into a batch until your specified criteria are met for releasing and processing the batched messages. Le traitement par lots peut réduire la fréquence à laquelle votre application logique traite les messages.Batching can reduce how often your logic app processes messages. Cet article montre comment concevoir une solution de traitement par lots en créant deux applications logiques dans le même abonnement et la même région Azure, en suivant cet ordre précis :This article shows how to build a batching solution by creating two logic apps within the same Azure subscription, Azure region, and following this specific order:

  • L’application logique « réceptrice de lots », qui accepte et collecte les messages dans un lot jusqu’à ce que vos critères précisés soient remplis pour mettre en production et traiter ces messages.The "batch receiver" logic app, which accepts and collects messages into a batch until your specified criteria is met for releasing and processing those messages.

    Veillez à commencer par la création du récepteur de lots, afin de pouvoir sélectionner ensuite la destination des lots lors de la création de l’expéditeur de lots.Make sure you first create the batch receiver so you can later select the batch destination when you create the batch sender.

  • Une ou plusieurs applications logiques « expéditrices de lots », qui envoient les messages au récepteur de lots précédemment créé.One or more "batch sender" logic apps, which send the messages to the previously created batch receiver.

    Vous pouvez également spécifier une clé unique (telle qu’un numéro de client), qui partitionne ou divise en sous-ensembles logiques le lot cible, en fonction de cette clé.You can also specify a unique key, such as a customer number, that partitions or divides the target batch into logical subsets based on that key. De cette façon, l’application réceptrice peut collecter tous les éléments avec la même clé et les traiter ensemble.That way, the receiver app can collect all items with the same key and process them together.

Assurez-vous que votre récepteur et votre expéditeur de lots partagent le même abonnement et la même région Azure.Make sure your batch receiver and batch sender share the same Azure subscription and Azure region. Si ce n’est pas le cas, vous ne pouvez pas sélectionner le récepteur de lots lorsque vous créez l’expéditeur de lots, car ils ne sont pas visibles entre eux.If they don't, you can't select the batch receiver when you create the batch sender because they're not visible to each other.

Conditions préalables requisesPrerequisites

Pour suivre cet exemple, vous avez besoin de ce qui suit :To follow this example, you need these items:

Créer le récepteur de lotsCreate batch receiver

Avant de pouvoir envoyer des messages à un lot, ce lot doit d’abord exister en tant que destination vers laquelle envoyer ces messages.Before you can send messages to a batch, that batch must first exist as the destination where you send those messages. Ainsi, vous devez commencer par créer l’application logique « réceptrice de lots », qui démarre avec le déclencheur Lot.So first, you must create the "batch receiver" logic app, which starts with the Batch trigger. De cette façon, lorsque vous créez l’application logique « expéditrice de lots », vous pouvez sélectionner l’application logique réceptrice de lots.That way, when you create the "batch sender" logic app, you can select the batch receiver logic app. Le récepteur de lots continue à collecter les messages jusqu’à ce que vos critères spécifiés soient remplis pour mettre en production et traiter ces messages.The batch receiver continues collecting messages until your specified criteria is met for releasing and processing those messages. Alors que les récepteurs de lots n’ont pas besoin de connaître les expéditeurs de lots, les expéditeurs de lots, eux, doivent connaître la destination vers laquelle envoyer les messages.While batch receivers don't need to know anything about batch senders, batch senders must know the destination where they send the messages.

  1. Dans le portail Azure ou dans Visual Studio, créez une application logique et nommez-la ainsi : « BatchReceiver »In the Azure portal or Visual Studio, create a logic app with this name: "BatchReceiver"

  2. Dans le Concepteur d'applications logiques, ajoutez le déclencheur Lot qui démarre le flux de travail de votre application logique.In Logic Apps Designer, add the Batch trigger, which starts your logic app workflow. Dans la zone de recherche, entrez « lot » comme filtre.In the search box, enter "batch" as your filter. Sélectionner le déclencheur : Traiter les messages par lotsSelect this trigger: Batch messages

    Ajout d’un déclencheur « Traiter les messages par lots »

  3. Définissez les propriétés suivantes pour le récepteur de lots :Set these properties for the batch receiver:

    PropriétéProperty DescriptionDescription
    Mode BatchBatch Mode - Inline : Pour définir des critères de mise en production à l’intérieur du déclencheur de lots- Inline: For defining release criteria inside the batch trigger
    - Compte d’intégration : Pour définir plusieurs configurations de critères de mise en production via un compte d’intégration.- Integration Account: For defining multiple release criteria configurations through an integration account. Avec un compte d’intégration, vous pouvez conserver ces configurations toutes au même endroit, plutôt que dans des applications logiques distincts.With an integration account, you can maintain these configurations all in one place rather than in separate logic apps.
    Nom du lotBatch Name Le nom de votre lot, qui est « TestBatch » dans cet exemple, et qui s’applique uniquement au mode batch InlineThe name for your batch, which is "TestBatch" in this example, and applies only to Inline batch mode
    Critères de mise en productionRelease Criteria S’applique seulement au mode batch Inline et sélectionne les critères à respecter avant de traiter chaque lot :Applies only to Inline batch mode and selects the criteria to meet before processing each batch:

    - Sur la base du nombre de messages : Mettez en production le lot en fonction du nombre de messages qu’il a collectés.- Message count based: Release the batch based on the number of messages collected by the batch.
    - En fonction de la taille : Mettez en production le lot en fonction de la taille totale (en octets) de tous les messages qu’il a collectés.- Size based: Release the batch based on the total size in bytes for all messages collected by that batch.
    - Planification : Mettez en production le lot selon une planification de récurrence, avec un intervalle et une fréquence.- Schedule: Release the batch based on a recurrence schedule, which specifies an interval and frequency. Dans les options avancées, vous pouvez également sélectionner un fuseau horaire, et fournir une date et une heure de début.In the advanced options, you can also select a time zone and provide a start date and time.
    - Tout sélectionner : Utilisez tous les critères spécifiés.- Select all: Use all the specified criteria.

    Nombre de messagesMessage Count Nombre de messages à collecter dans le lot, par exemple 10 messages.The number of messages to collect in the batch, for example, 10 messages. Pour un lot, la limite est de 8 000 messages.A batch's limit is 8,000 messages.
    Taille de lotBatch Size Taille totale à collecter dans le lot (en octets), par exemple, 10 Mo.The total size in bytes to collect in the batch, for example, 10 MB. La taille limite d’un lot est de 80 Mo.A batch's size limit is 80 MB.
    PlanificationSchedule Intervalle et fréquence entre les mises en production de lots, par exemple 10 minutes.The interval and frequency between batch releases, for example, 10 minutes. La périodicité minimale est de 60 secondes ou 1 minute.The minimum recurrence is 60 seconds or 1 minute. Les fractions de minutes sont arrondies à 1 minute.Fractional minutes are effectively rounded up to 1 minute. Pour spécifier un fuseau horaire ainsi qu’une date et une heure de début, choisissez Afficher les options avancées.To specify a time zone or a start date and time, choose Show advanced options.

    Notes

    Si vous modifiez les critères de mise en production alors que le déclencheur a toujours des messages traités par lot mais non envoyés, celui-ci utilise les nouveaux critères de mise en production pour gérer les messages non envoyés.If you change the release criteria while the trigger still has batched but unsent messages, the trigger uses the updated release criteria for handling the unsent messages.

    Cet exemple montre tous les critères. Toutefois, pour vos propres tests, vous pouvez n’utiliser qu’un seul critère :This example shows all the criteria, but for your own testing, try just one criterion:

    Détails à fournir concernant le déclencheur Lot

  4. Ajoutez maintenant une ou plusieurs actions qui traitent chaque lot.Now add one or more actions that process each batch.

    Pour cet exemple, ajoutez une action qui envoie un e-mail lorsque le déclencheur de lot est activé.For this example, add an action that sends an email when the batch trigger fires. Le déclencheur s’exécute et envoie un e-mail lorsque le lot contient 10 messages, atteint 10 Mo, ou au bout de 10 minutes.The trigger runs and sends an email when the batch either has 10 messages, reaches 10 MB, or after 10 minutes pass.

    1. Sous le déclencheur Lot, sélectionnez Nouvelle étape.Under the batch trigger, choose New step.

    2. Dans la zone de recherche, entrez «  envoyer e-mail » comme filtre.In the search box, enter "send email" as your filter. Sélectionnez un connecteur de messagerie en fonction de votre fournisseur de messagerie.Based on your email provider, select an email connector.

      Par exemple, si vous avez un compte personnel, tel que @outlook.com ou @hotmail.com, sélectionnez le connecteur Outlook.com.For example, if you have a personal account, such as @outlook.com or @hotmail.com, select the Outlook.com connector. Si vous avez un compte Gmail, sélectionnez le connecteur Gmail.If you have a Gmail account, select the Gmail connector. Office 365 Outlook est utilisé dans cet exemple.This example uses Office 365 Outlook.

    3. Sélectionnez cette action : Envoyer un e-mail - <fournisseur de messagerie>Select this action: Send an email - <email provider>

      Par exemple :For example:

      Sélection de l’action « Envoyer un message électronique » pour votre fournisseur de messagerie

  5. Si vous y êtes invité, connectez-vous à votre compte e-mail.If prompted, sign in to your email account.

  6. Définissez les propriétés de l’action que vous avez ajoutée.Set the properties for the action you added.

    • Dans la zone À, entrez l’adresse e-mail du destinataire.In the To box, enter the recipient's email address. À des fins de test, vous pouvez utiliser votre propre adresse e-mail.For testing purposes, you can use your own email address.

    • Dans la zone Objet, lorsque la liste de contenu dynamique s’affiche, sélectionnez le champ Nom de partition.In the Subject box, when the dynamic content list appears, select the Partition Name field.

      Dans la liste de contenu dynamique, sélection du « Nom de partition »

      Plus tard, dans l’expéditeur de lots, vous pouvez spécifier une clé de partition unique, afin de diviser le lot cible en plusieurs sous-ensembles logiques vers lesquels envoyer des messages.Later, in the batch sender, you can specify a unique partition key that divides the target batch into logical subsets where you can send messages. Chaque ensemble est associé à un numéro unique qui est généré par l’application logique expéditrice de lots.Each set has a unique number that's generated by the batch sender logic app. Cette fonctionnalité permet d’utiliser un lot comprenant plusieurs sous-ensembles et de définir chaque sous-ensemble avec le nom que vous fournissez.This capability lets you use a single batch with multiple subsets and define each subset with the name that you provide.

      Important

      Une partition a une limite de 5 000 messages ou 80 Mo.A partition has a limit of 5,000 messages or 80 MB. Si l’une ou l’autre des conditions est remplie, Logic Apps peut mettre en production le lot, même lorsque votre condition de mise en production définie n’est pas remplie.If either condition is met, Logic Apps might release the batch, even when your defined release condition isn't met.

    • Dans la zone Corps, lorsque la liste de contenu dynamique s’affiche, sélectionnez le champ ID de message.In the Body box, when the dynamic content list appears, select the Message Id field.

      Le concepteur Logic Apps ajoute automatiquement une boucle « For each » autour de l’action d’envoi d’e-mail, car cette action traite la sortie de l’action précédente comme une collection et non pas comme un lot.The Logic Apps Designer automatically adds a "For each" loop around the send email action because that action treats the output from the previous action as a collection, rather than a batch.

      Pour « Corps », sélectionnez « ID de message »

  7. Enregistrez votre application logique.Save your logic app. Vous venez de créer un récepteur de lots.You've now created a batch receiver.

    Enregistrer votre application logique

  8. Si vous utilisez Visual Studio, veillez à déployer votre application logique réceptrice de lots sur Azure.If you're using Visual Studio, make sure you deploy your batch receiver logic app to Azure. Sinon, vous ne pouvez pas sélectionner le récepteur de lots lorsque vous créez l’expéditeur de lots.Otherwise, you can't select the batch receiver when you create the batch sender.

Créer l’expéditeur de lotsCreate batch sender

À présent, créez une ou plusieurs applications logiques expéditrices de lots qui envoient des messages vers l’application logique réceptrice de lots.Now create one or more batch sender logic apps that send messages to the batch receiver logic app. Dans chaque expéditeur de lots, vous spécifiez le récepteur de lots avec le nom du lot, le contenu du message et tout autre paramètre nécessaire.In each batch sender, you specify the batch receiver and batch name, message content, and any other settings. Vous pouvez éventuellement fournir une clé de partition unique pour diviser le lot en sous-ensembles logiques pour la collecte des messages avec cette clé.You can optionally provide a unique partition key to divide the batch into logical subsets for collecting messages with that key.

  • En vous assurant d’avoir créé votre récepteur de lots avant de créer votre expéditeur de lots, vous pouvez sélectionner le récepteur existant comme destinataire de lots.Make sure you've already created your batch receiver so when you create your batch sender, you can select the existing batch receiver as the destination batch. Alors que les récepteurs de lots n’ont pas besoin de connaître les expéditeurs de lots, les expéditeurs de lots, eux, doivent savoir où envoyer les messages.While batch receivers don't need to know anything about batch senders, batch senders must know where to send messages.

  • Vérifiez que vos récepteur et expéditeur de lots partagent la même région et le même abonnement Azure.Make sure your batch receiver and batch sender share the same Azure region and Azure subscription. Si ce n’est pas le cas, vous ne pouvez pas sélectionner le récepteur de lots lorsque vous créez l’expéditeur de lots, car ils ne sont pas visibles entre eux.If they don't, you can't select the batch receiver when you create the batch sender because they're not visible to each other.

  1. Créez une autre application logique portant le nom suivant : « BatchSender »Create another logic app with this name: "BatchSender"

    1. Dans la zone de recherche, entrez « récurrence » comme filtre.In the search box, enter "recurrence" as your filter. Sélectionner le déclencheur : Récurrence - PlanificationSelect this trigger: Recurrence - Schedule

      Ajout du déclencheur « Récurrence - Planification »

    2. Définissez la fréquence et l’intervalle d’exécution de l’application logique expéditrice sur une minute.Set the frequency and interval to run the sender logic app every minute.

      Définition de la fréquence et de l’intervalle pour le déclencheur Récurrence

  2. Ajoutez une nouvelle étape pour envoyer des messages vers un lot.Add a new action for sending messages to a batch.

    1. Sous le déclencheur Récurrence, choisissez Nouvelle étape.Under the recurrence trigger, choose New step.

    2. Dans la zone de recherche, entrez « lot » comme filtre.In the search box, enter "batch" as your filter. Dans la liste Actions, sélectionnez cette action : Choisir un workflow Logic Apps avec déclencheur de lot - Envoyer les messages au lotSelect the Actions list, and then select this action: Choose a Logic Apps workflow with batch trigger - Send messages to batch

      Sélection de « Choisir un workflow Logic Apps avec déclencheur de lot »

    3. Sélectionnez l’application logique réceptrice de lots que vous avez créée précédemment.Select your batch receiver logic app that you previously created.

      Sélection de l’application logique « BatchReceiver »

      Notes

      La liste affiche également toutes les autres applications logiques qui sont associées à un déclencheur de lot.The list also shows any other logic apps that have batch triggers.

      Si vous utilisez Visual Studio et que vous ne voyez aucun récepteur de lot à sélectionner, vérifiez que vous avez déployé votre récepteur de lots sur Azure.If you're using Visual Studio, and you don't see any batch receivers to select, check that you deployed your batch receiver to Azure. Si ce n’est pas le cas, découvrez comment déployer votre application logique réceptrice de lots sur Azure.If you haven't, learn how to deploy your batch receiver logic app to Azure.

    4. Sélectionnez cette action : Traiter_les_messages_par_lots - <votre-récepteur-de-lots>Select this action: Batch_messages - <your-batch-receiver>

      Sélectionnez cette action : "Traiter_les_messages_par_lots - "

  3. Définissez les propriétés de l’expéditeur de lots :Set the batch sender's properties:

    PropriétéProperty DescriptionDescription
    Nom du lotBatch Name Nom défini par l’application logique réceptrice (« TestBatch » dans cet exemple)The batch name defined by the receiver logic app, which is "TestBatch" in this example

    Important ! Le nom du lot est validé lors de l’exécution et doit correspondre au nom spécifié par l’application logique réceptrice.Important: The batch name gets validated at runtime and must match the name specified by the receiver logic app. Si vous modifiez ce nom, l’expéditeur de lots échoue.Changing the batch name causes the batch sender to fail.

    Contenu du messageMessage Content Contenu du message que vous voulez envoyerThe content for the message you want to send

    Pour cet exemple, ajoutez l’expression suivante qui insère la date et l’heure actuelles dans le contenu du message que vous envoyez au lot :For this example, add this expression, which inserts the current date and time into the message content that you send to the batch:

    1. Cliquez dans la zone Contenu du Message.Click inside the Message Content box.

    2. Lorsque la liste de contenu dynamique s’affiche, choisissez Expression.When the dynamic content list appears, choose Expression.

    3. Entrez l’expression utcnow(), puis choisissez OK.Enter the expression utcnow(), and then choose OK.

      Dans « Contenu du message », choisissez « Expression », entrez « utcnow() » et choisissez « OK ».

  4. À présent, définissez une partition pour le lot.Now set up a partition for the batch. Dans l’action « BatchReceiver », choisissez Afficher les options avancées et définissez ces propriétés :In the "BatchReceiver" action, choose Show advanced options and set these properties:

    PropriétéProperty DescriptionDescription
    Nom de partitionPartition Name Clé de partition unique facultative, à utiliser pour diviser le lot cible en sous-ensembles logiques et collecter les messages en fonction de cette cléAn optional unique partition key to use for dividing the target batch into logical subsets and collect messages based on that key
    ID de messageMessage Id Identificateur de message facultatif, qui est un identificateur global unique généré (GUID) lorsqu’il est videAn optional message identifier that is a generated globally unique identifier (GUID) when empty

    Pour cet exemple, dans la zone Nom de partition, ajoutez une expression qui génère un nombre aléatoire compris entre 1 et 5.For this example, in the Partition Name box, add an expression that generates a random number between one and five. Laissez la zone ID de message vide.Leave the Message Id box empty.

    1. Cliquez dans la zone Nom de partition pour afficher la liste de contenu dynamique.Click inside the Partition Name box so that the dynamic content list appears.

    2. Dans la liste de contenu dynamique, choisissez Expression.In the dynamic content list, choose Expression.

    3. Entrez l’expression rand(1,6), puis choisissez OK.Enter the expression rand(1,6), and then choose OK.

      Définition d’une partition pour le lot cible

      Cette fonction rand génère un nombre compris entre 1 et 5.This rand function generates a number between one and five. Vous divisez donc ce lot en cinq partitions numérotées, définies dynamiquement par cette expression.So you are dividing this batch into five numbered partitions, which this expression dynamically sets.

  5. Enregistrez votre application logique.Save your logic app. Votre application logique expéditrice doit désormais ressembler à ceci :Your sender logic app now looks similar to this example:

    Enregistrement de l’application logique

Tester les applications logiquesTest your logic apps

Pour tester votre solution de traitement par lots, laissez vos applications logiques s’exécuter pendant quelques minutes.To test your batching solution, leave your logic apps running for a few minutes. Vous allez commencer à recevoir des e-mails par groupes de cinq, tous avec la même clé de partition.Soon, you start getting emails in groups of five, all with the same partition key.

Votre application logique expéditrice de lots s’exécute toutes les minutes, elle génère un nombre aléatoire compris entre 1 et 5 et utilise ce numéro généré comme clé de partition pour le lot cible où sont envoyés les messages.Your batch sender logic app runs every minute, generates a random number between one and five, and uses this generated number as the partition key for the target batch where messages are sent. Chaque fois que le lot comporte cinq éléments avec la même clé de partition, l’application logique réceptrice de lots se déclenche et envoie un e-mail pour chaque message.Each time the batch has five items with the same partition key, your batch receiver logic app fires and sends mail for each message.

Important

Lorsque vous avez terminé vos tests, veillez à désactiver l’application logique BatchSender afin d’arrêter l’envoi de messages et éviter la surcharge de la boîte de réception.When you're done testing, make sure that you disable the BatchSender logic app to stop sending messages and avoid overloading your inbox.

Étapes suivantesNext steps