Inviare, ricevere ed elaborare in batch i messaggi nelle app per la logica di Azure

Si applica a: App per la logica di Azure (consumo)

Per inviare ed elaborare i messaggi in modo specifico come gruppi, è possibile creare una soluzione di invio in batch. Questa soluzione raccoglie i messaggi in un batch e attende fino a quando i criteri specificati non vengono soddisfatti prima di rilasciare ed elaborare i messaggi in batch. L'invio in batch può ridurre la frequenza con cui l’app per la logica elabora i messaggi.

Questa guida pratica illustra come creare una soluzione in batch creando due app per la logica all'interno della stessa sottoscrizione di Azure, area di Azure e in questo ordine:

  1. L’app per la logica "che riceve il batch", che accetta e raccoglie i messaggi in un batch fino a quando non vengono soddisfatti i criteri specificati per il rilascio e l'elaborazione dei messaggi. Assicurarsi di creare prima questo ricevitore batch in modo che sia possibile selezionare successivamente la destinazione batch quando si crea il mittente del batch.

  2. Una o più app per la logica "mittenti del batch", che inviano i messaggi al ricevitore del batch creato in precedenza.

    Il mittente del batch può specificare una chiave univoca che partiziona o divide il batch di destinazione in subset logici, in base a tale chiave. Ad esempio, un numero di cliente è una chiave univoca. In questo modo, l'app ricevente può raccogliere tutti gli elementi con la stessa chiave ed elaborarli contemporaneamente.

Il ricevitore e il mittente batch devono condividere la stessa sottoscrizione di Azure e la stessa area di Azure. In caso contrario, è possibile selezionare il ricevitore del batch quando si crea il mittente del batch perché non sono visibili tra loro.

Prerequisiti

Limitazioni

  • È possibile controllare il contenuto di un batch solo dopo il rilascio confrontando il contenuto rilasciato con l'origine.

  • È possibile rilasciare un batch in anticipo solo modificando i criteri di rilascio nel ricevitore batch, descritto in questa guida, mentre il trigger ha ancora il batch. Tuttavia, il trigger usa i criteri di versione aggiornati per i messaggi non inviati.

Creare il ricevitore del batch

Prima di poter inviare messaggi a un batch, il batch deve esistere come destinazione in cui si inviano i messaggi. Quindi, innanzitutto, è necessario creare l'app per la logica "ricevente il batch", che inizia con il trigger del batch. In questo modo, quando si crea l’app per la logica “mittente del batch” è possibile selezionare l’app per la logica ricevente il batch. Il ricevitore del batch continua a raccogliere i messaggi fino a quando non vengono soddisfatti i criteri specificati per il rilascio e l'elaborazione dei messaggi. Anche se non è necessario che i ricevitori di batch conoscano i mittenti di batch, i mittenti di batch devono conoscere la destinazione in cui inviano i messaggi.

  1. In portale di Azure o Visual Studio creare un'app per la logica con questo nome:BatchReceiver

  2. Nella finestra di progettazione del flusso di lavoro aggiungere il trigger Batch , che avvia il flusso di lavoro dell'app per la logica. Nella casella di ricerca immettere batche selezionare questo trigger: Messaggi batch

    Aggiungere il trigger

  3. Impostare queste proprietà per il ricevitore di batch:

    Proprietà Descrizione
    Modalità batch - Inline: per la definizione di criteri di rilascio all'interno del trigger batch
    - Account di integrazione: per la definizione di più configurazioni di criteri di rilascio tramite un'account di integrazione. Con un account di integrazione, è possibile gestire queste configurazioni in un'unica posizione invece che nell'App per la logica separata.
    Nome batch Il nome per il batch, che è "TestBatch" in questo esempio, si applica solo al Inline modalità batch
    Criteri di rilascio Si applica solo alla modalità batch Inline e seleziona i criteri da soddisfare prima di elaborare ogni batch:

    - Basato sul numero di messaggi: rilasciare il batch in base al numero di messaggi raccolti dal batch.
    - Base dimensioni: rilasciare il batch in base alle dimensioni totali in byte per tutti i messaggi raccolti dal batch.
    - Pianificazione: rilasciare il batch in base a una pianificazione di ricorrenza, che specifica un intervallo e una frequenza. Nelle opzioni avanzate è anche possibile selezionare un fuso orario e specificare una data e un'ora di inizio.
    - Seleziona tutto: usare tutti i criteri specificati.

    Numero messaggi Il numero di messaggi da raccogliere nel batch, ad esempio 10 messaggi. Per un batch è previsto un limite di 8000 messaggi.
    Dimensioni batch Dimensione totale in byte per i messaggi raccolti nel batch, ad esempio 10 MB. Per un batch è prevista una dimensione massima di 80 MB.
    Pianificare Intervallo e frequenza tra i rilasci di batch, ad esempio 10 minuti. La ricorrenza minima è di 60 secondi o 1 minuto. I valori frazionari dei minuti vengono arrotondati per eccesso a 1 minuto. Per specificare un fuso orario o una data e un'ora di inizio, aprire l'elenco Aggiungi nuovo parametro e selezionare le proprietà corrispondenti.

    Nota

    Se si modificano i criteri di rilascio quando il trigger ha elaborato i messaggi in batch ma non li ha ancora inviati, il trigger usa i criteri di rilascio aggiornati per gestire i messaggi non inviati.

    Questo esempio mostra tutti i criteri, ma è sufficiente provarne uno solo a scopo di test:

    Specificare i dettagli del trigger batch

  4. Ora aggiungere una o più azioni che elaborano ogni batch.

    Per questo esempio, aggiungere un'azione che invii un messaggio di posta elettronica quando viene attivato il trigger batch. Il trigger viene eseguito e invia un messaggio di posta elettronica quando il batch ha 10 messaggi, raggiunge i 10 MB o dopo 10 minuti.

    1. Nel trigger batch selezionare Nuovo passaggio.

    2. Nella casella di ricerca immettere send email come filtro. In base al provider di posta elettronica in uso, selezionare un connettore di posta elettronica.

      Ad esempio, se si dispone di un account aziendale o dell'istituto di istruzione, ad @fabrikam.com esempio o @fabrikam.onmicrosoft.com, selezionare il connettore Microsoft 365 Outlook . Se si dispone di un account personale, ad esempio @outlook.com o @hotmail.com, selezionare il connettore Outlook.com . In questo esempio viene utilizzato il connettore Microsoft 365 Outlook.

    3. Selezionare l'azione "Invia un messaggio di posta elettronica" per il provider, ad esempio:

      Selezionare l'azione

  5. Se richiesto, accedere all'account di posta elettronica.

  6. Impostare le proprietà per l'azione aggiunta.

    • Nella casella A immettere l'indirizzo di posta elettronica del destinatario. AI fini del test delle app è possibile indicare il proprio indirizzo di posta elettronica.

    • Nella casella Oggetto , quando viene visualizzato l'elenco di contenuto dinamico, selezionare il campo Nome partizione .

      Nell'elenco contenuto dinamico selezionare

      Più avanti, per il mittente del batch, si specificherà una chiave di partizione univoca che divide il batch di destinazione in subset logici a cui è possibile inviare i messaggi. Ogni set è associato a un numero univoco che viene generato dall'app per la logica mittente del batch. Questa funzionalità consente di usare un unico batch con più subset e di assegnare a ogni subset il nome desiderato.

      Importante

      Una partizione ha un limite di 5.000 messaggi o di 80 MB. Se viene soddisfatta la condizione, l’app per la logica può rilasciare il batch, anche quando non viene soddisfatta la condizione di rilascio.

    • Nella casella Corpo , quando viene visualizzato l'elenco di contenuto dinamico, selezionare il campo ID messaggio .

      Progettazione flussi di lavoro aggiunge automaticamente un ciclo For each intorno all'azione invia messaggio di posta elettronica perché tale azione considera l'output dell'azione precedente come una raccolta, anziché un batch.

      Per la casella

  7. Salvare l'app per la logica. È stato creato un ricevitore di batch.

    Salvare l'app per la logica

    Importante

    Se si usa Visual Studio, prima di continuare alla sezione successiva, assicurarsi di distribuire prima l'app per la logica del ricevitore batch in Azure. In caso contrario, non è possibile selezionare il ricevitore di batch quando si crea il mittente del batch.

Creare il mittente dei batch

A questo punto creare una o più app per la logica mittenti del batch che inviano messaggi all’app per la logica che riceve il batch. In ogni mittente del batch specificare il ricevitore del batch e il nome del batch, il contenuto del messaggio ed eventuali altre impostazioni. È possibile specificare anche una chiave di partizione univoca per dividere il batch in subset logici per raccogliere gli elementi a cui è assegnata tale chiave.

  • Assicurarsi di aver creato e distribuito in precedenza il ricevitore batch in modo da creare il mittente batch, è possibile selezionare il ricevitore batch esistente come batch di destinazione. Anche se non è necessario che i ricevitori di batch conoscano i mittenti di batch, i mittenti di batch devono conoscere la destinazione in cui inviano i messaggi.

  • Assicurarsi che il ricevitore batch e il mittente batch condividono la stessa area di Azure e la stessa sottoscrizione di Azure. In caso contrario, è possibile selezionare il ricevitore del batch quando si crea il mittente del batch perché non sono visibili tra loro.

  1. Creare un'altra app per la logica con questo nome: BatchSender

    1. Nella casella di ricerca immettere recurrence come filtro. Nell'elenco di trigger selezionare questo trigger: Ricorrenza

      Aggiungere il trigger Ricorrenza

    2. Impostare l'intervallo e la frequenza per eseguire l'app per la logica del mittente ogni minuto.

      Impostare la frequenza e l'intervallo per il trigger ricorrenza

  2. Aggiungere una nuova azione per l'invio di messaggi a un batch.

    1. Nel trigger Ricorrenza selezionare Nuovo passaggio.

    2. Nella casella di ricerca immettere batch come filtro e selezionare questa azione: Scegliere un flusso di lavoro app per la logica con trigger batch

      Selezionare “Scegliere un flusso di lavoro delle app per la logica con un trigger batch”

      Viene visualizzato un elenco e mostra solo le app per la logica che dispongono di trigger batch ed esistono nella stessa area di Azure e nella stessa sottoscrizione di Azure dell'app per la logica del mittente batch.

    3. Nell'elenco app per la logica selezionare l'app per la logica del ricevitore batch creata in precedenza.

      Selezionare l'app per la logica del ricevitore batch

      Importante

      Se si usa Visual Studio e non vengono visualizzati ricevitori batch da selezionare, verificare che in precedenza sia stato creato e distribuito il ricevitore batch in Azure. In caso contrario, informazioni su come distribuire l'app per la logica del ricevitore batch in Azure.

    4. Nell'elenco azioni selezionare questa azione: Batch_messages - <your-logic-app-name>

      Selezionare questa azione:

  3. Impostare le proprietà del mittente del batch:

    Proprietà Descrizione
    Nome batch Nome batch definito dall'app per la logica del ricevitore, che si trova TestBatch in questo esempio

    Importante: il nome del batch viene convalidato in fase di esecuzione e deve corrispondere al nome specificato dall'app per la logica ricevente. Se si modifica il nome del batch, l'esecuzione del mittente del batch ha esito negativo.

    Contenuto del messaggio Contenuto del messaggio da inviare

    Nota

    I valori delle proprietà Nome trigger e Flusso di lavoro vengono popolati automaticamente dall'app per la logica selezionata.

    Per questo esempio aggiungere questa espressione che inserisce la data e l'ora correnti nel contenuto del messaggio da inviare al batch:

    1. Fare clic all'interno della casella contenuto messaggio.

    2. Quando viene visualizzato l'elenco contenuto dinamico, selezionare Espressione.

    3. Immettere l'espressione utcnow()e selezionare OK.

      In

  4. Configurare a questo punto una partizione per il batch. Nell'azione aprire l'elenco BatchReceiverAggiungi nuovo parametro e selezionare queste proprietà:

    Proprietà Descrizione
    Nome partizione Una chiave di partizione univoca facoltativa da usare per la suddivisione del batch di destinazione in subset logici e raccogliere i messaggi in base a tale chiave
    ID messaggio Un identificatore di messaggio facoltativo che rappresenta l'identificatore univoco globale generato (GUID) se non viene specificato

    Per questo esempio aggiungere un'espressione nella casella Nome della partizione che genera un numero casuale compreso tra uno e cinque. Lasciare la casella Id del messaggio vuota.

    1. Fare clic all'interno della casella Nome della partizione in modo che venga visualizzato l'elenco di contenuti dinamici.

    2. Nell'elenco di contenuto dinamico selezionare Espressione.

    3. Immettere l'espressione rand(1,6)e quindi selezionare OK.

      Configurare una partizione per il batch di destinazione

      Questa funzione rand genera un numero compreso tra uno e cinque. Quindi, si divide questo batch in cinque partizioni numerate, che questa espressione imposta dinamicamente.

  5. Salvare l'app per la logica. L'app per la logica appare ora simile a questo esempio:

    Salvare l'app per la logica mittente

Testare le app per la logica

Per testare la soluzione per l'invio in batch, lasciare in esecuzione le app per la logica per alcuni minuti. Si inizierà presto a ricevere messaggi di posta elettronica a gruppi di cinque, tutti con la stessa chiave di partizione.

L'app per la logica del mittente batch viene eseguita ogni minuto e genera un numero casuale compreso tra uno e cinque. Il mittente batch usa questo numero casuale come chiave di partizione per il batch di destinazione in cui si inviano i messaggi. Ogni volta che il batch contiene cinque elementi con la stessa chiave di partizione, l'app per la logica ricevente il batch si attiva e invia posta elettronica per ogni messaggio.

Importante

Al termine del test, assicurarsi di disabilitare l'app per la logica per arrestare l'invio di messaggi ed evitare l'overload BatchSender della posta in arrivo.

Passaggi successivi