Condividi tramite


Processo batch e scambio di messaggi in gruppi tra flussi di lavoro in App per la logica di Azure

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

Per inviare ed elaborare 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 di invio 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 di logica "batch receiver", che accetta e raccoglie i messaggi in un batch fino a quando non vengono soddisfatti i criteri specificati per il rilascio e l'elaborazione di quei 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 di logica per l'invio di batch, che inviano i messaggi al batch receiver 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 cliente è una chiave univoca. In questo modo, l'app ricevente può raccogliere tutti gli elementi con la stessa chiave ed elaborarli contemporaneamente.

Il destinatario del batch e il mittente batch devono condividere la stessa sottoscrizione di Azure e la stessa area di Azure. Se non lo fanno, non è possibile selezionare il ricevitore del batch quando si crea il mittente del batch perché non sono visibili l'uno all'altro.

Prerequisiti

Limiti

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

  • È possibile rilasciare un batch solo in anticipo 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 rilascio aggiornati per eventuali 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. Prima di tutto, è necessario creare il workflow dell'applicazione logica denominata "batch receiver", che inizia con il Batch Trigger. In questo modo, quando si crea il flusso di lavoro dell'app per la logica "mittente del batch", è possibile selezionare l'app per la logica che riceve 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. Nel portale di Azure, creare una risorsa per app logica con un flusso di lavoro vuoto.

    Questo esempio crea un'app per la logica del ricevitore batch e un flusso di lavoro denominato BatchReceiver.

  2. Nella finestra di progettazione del flusso di lavoro, selezionare Aggiungi un trigger e seguire questi passaggi generali per aggiungere il trigger Batch Operations denominato Batch Trigger.

  3. Impostare le proprietà del trigger seguenti:

    Proprietà Descrizione
    Modalità
    (solo flussi di lavoro a consumo)
    - Inline: per definire i criteri di rilascio all'interno del trigger del batch

    - Account di integrazione: tramite un account di integrazione è possibile definire configurazioni multiple dei criteri di rilascio. Con un account di integrazione, è possibile gestire tutte queste configurazioni in un'unica posizione anziché in risorse separate dell'app per la logica.
    Nome del batch Nome del batch. In Flussi di lavoro a consumo questa proprietà viene visualizzata solo quando Mode è impostato su Inline. In questo esempio viene usato TestBatch.
    Criteri di rilascio Criteri da soddisfare prima dell'elaborazione di ogni batch. Per impostazione predefinita, il trigger batch funziona usando la "modalità inline" in cui si definiscono i criteri di rilascio batch all'interno del trigger batch.

    - Basato sul numero di messaggi: rilasciare il batch in base al numero di messaggi raccolti dal batch.

    - Basato sulla dimensione: Eseguire il batch in base alla dimensione totale in byte di tutti i messaggi raccolti dal batch.

    - Pianificazione basata su: rilasciare il batch in base a una pianificazione di ricorrenza, che specifica un intervallo e una frequenza. Facoltativamente, è possibile selezionare un fuso orario e specificare una data e un'ora di inizio.

    Per usare tutti i criteri specificati, selezionare tutte le opzioni.
    Numero di messaggi Il numero di messaggi da raccogliere nel batch, ad esempio 10 messaggi. Il limite di messaggi batch è di 8.000 messaggi.
    Dimensioni del batch Dimensione totale dei byte per i messaggi da raccogliere nel batch, ad esempio 10 MB o 10.485.760 byte. Il limite di dimensioni del batch è 80 MB.
    Ricorrenza 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. Facoltativamente, è possibile selezionare un fuso orario e specificare una data e un'ora di inizio.

    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:

    Screenshot che mostra tutti i criteri per il Batch Trigger.

  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 del batch selezionare il segno più (+) >Aggiungi un'azione.

    2. Seguire questi passaggi generali per aggiungere un'azione che invia un messaggio di posta elettronica in base al provider di posta elettronica.

      Ad esempio, se si dispone di un account aziendale o dell'istituto di istruzione, ad esempio @fabrikam.com 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.

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

  6. Impostare le proprietà dell'azione seguenti:

    • 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.

    • Selezionare all'interno della casella Oggetto per visualizzare le opzioni per l'elenco di contenuto dinamico (icona a forma di fulmine) e l'editor di espressioni (icona funzione). Selezionare l'icona a forma di fulmine per aprire l'elenco di contenuto dinamico e selezionare il campo denominato Nome partizione.

      Screenshot che mostra un elenco di contenuti dinamici e il campo selezionato per la proprietà Nome Partizione.

      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 ha un numero univoco generato dal flusso di lavoro dell'app di logica di invio 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 una delle due condizioni, Azure Logic Apps potrebbe rilasciare il batch anche se non è soddisfatta la condizione di rilascio definita.

    • Selezionare all'interno del box Corpo, selezionare l'icona del fulmine per aprire l'elenco del contenuto dinamico e selezionare il campo Message Message Id.

      La finestra di progettazione del flusso di lavoro aggiunge automaticamente un ciclo For each intorno all'azione di invio email perché quell'azione considera l'output dell'azione precedente come una raccolta anziché un batch.

      Nell'esempio seguente viene mostrato il riquadro informazioni dopo la selezione della casella For each nella finestra di progettazione in cui Elementi in batch è il nome della raccolta.

      Screenshot che mostra la raccolta Elementi in batch con gli output dell'operazione precedente.

  7. Salvare il flusso di lavoro. È stato creato un ricevitore di batch.

    Importante

    Se si usa Visual Studio Code, prima di continuare con la sezione successiva distribuire la risorsa dell'app per la logica che riceve il batch in Azure. ** Altrimenti, non è possibile selezionare il flusso di lavoro dell'app per la logica batch del ricevitore quando si crea quello dell'app per la logica batch del mittente.

Creare il mittente dei batch

A questo punto creare uno o più flussi di lavoro dell'app per la logica "mittente del batch" che inviano messaggi al flusso di lavoro dell'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 fornire una chiave di partizione univoca per dividere opzionalmente il batch in subset logici, così da raccogliere i messaggi associati a quella chiave.

  • Assicurarsi di aver creato e distribuito in precedenza il ricevitore batch in modo che quando si crea il mittente del 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 destinatario del batch e il mittente del batch condividano la stessa area di Azure e la stessa sottoscrizione di Azure. Se non lo fanno, non è possibile selezionare il ricevitore del batch quando si crea il mittente del batch perché non sono visibili l'uno all'altro.

  1. Creare un'altra risorsa dell'app per la logica e un flusso di lavoro denominato BatchSender.

    Nota

    Se si dispone di una risorsa dell'app per la logica Standard, è importante creare un flusso di lavoro con stato, non senza stato, perché il trigger Ricorrenza non è disponibile per i flussi di lavoro senza stato.

  2. Seguire questi passaggi generali per aggiungere il trigger Pianifica denominato Ricorrenza.

    In questo esempio viene impostato l'intervallo e la frequenza per eseguire il flusso di lavoro del mittente ogni minuto.

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

    1. Nel trigger Ricorrenza selezionare il segno più (+) >Aggiungi nuova azione.

    2. Seguire questi passaggi generali per aggiungere un'azione di operazioni batch denominata Invia a flusso di lavoro per trigger batch (flusso di lavoro A consumo) o Invia a batch (flusso di lavoro Standard).

    3. In base al fatto che si disponga di un flusso di lavoro a consumo o di un flusso di lavoro Standard, seguire la procedura corrispondente:

      Flusso di lavoro A consumo

      Dopo aver aggiunto l'azione Invia a flusso di lavoro per trigger batch, viene visualizzato un elenco che mostra solo le risorse dell'app per la logica con trigger batch presenti nella stessa sottoscrizione e nella stessa area di Azure della risorsa dell'app per la logica mittente del batch.

      1. Nell'elenco delle app per la logica selezionare l'app per la logica creata in precedenza da usare come ricevitore batch. Quando vengono visualizzati i trigger disponibili, selezionare il trigger denominato Batch_messages.

        Screenshot che mostra il flusso di lavoro di consumo con trigger di ricorrenza e azione mittente di batch che seleziona una risorsa dell'app di logica ricevitore di batch e un trigger.

        Importante

        Se si usa Visual Studio Code e non vengono visualizzati ricevitori batch da selezionare, verificare che il ricevitore batch sia stato creato e distribuito in precedenza in Azure. Se non l'hai fatto, scopri come distribuire la risorsa dell'app logica del ricevitore batch su Azure.

      2. Al termine, selezionare Aggiungi azione.

      Flusso di lavoro Standard

      Dopo aver aggiunto l'azione Invia al batch , il riquadro azioni mostra le proprietà seguenti nel passaggio successivo per specificare il nome del batch, il contenuto del messaggio, il nome del flusso di lavoro e il nome del trigger. Si possono specificare informazioni solo per un flusso di lavoro di un'app per la logica che riceve il batch con un trigger batch che esista nella stessa sottoscrizione di Azure e nella stessa area di Azure dell'app per la logica mittente del batch.

      Screenshot che mostra il flusso di lavoro Standard con trigger Ricorrenza e azione denominata Invia al batch.

  4. Impostare le proprietà seguenti dell'azione del ricevitore batch:

    Proprietà Descrizione
    Nome del batch Nome del batch definito dall'app per la logica ricevente, che è 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 del ricevitore batch. Se si modifica il nome del batch, ciò causa il fallimento del mittente del batch.
    Contenuto del messaggio Contenuto del messaggio da inviare. Vedere l'esempio seguente per il valore da usare.
    Nome flusso di lavoro
    (solo flussi di lavoro Standard)
    Nome del flusso di lavoro con il trigger batch.
    Nome trigger Nome del trigger batch nel flusso di lavoro dell'app per la logica che riceve il batch. Nei flussi di lavoro A consumo, questo valore viene inserito automaticamente dall'app per la logica che riceve il batch selezionata.
    ID flusso di lavoro ID per il flusso di lavoro dell'app per la logica che riceve il batch con nome "trigger batch". Nei flussi di lavoro A consumo, questo valore viene inserito automaticamente dall'app per la logica che riceve il batch selezionata.

    In questo esempio, per il valore della proprietà Contenuto messaggio, aggiungere l'espressione seguente, che inserisce la data e l'ora correnti nel contenuto del messaggio che si invia al batch:

    1. Selezionare all'interno della casella Contenuto messaggio per visualizzare le opzioni per il contenuto dinamico (icona a forma di fulmine) e l'editor di espressioni (icona della funzione).

    2. Selezionare l'icona della funzione per aprire l'editor di espressioni.

    3. Nell'editor immettere la funzione denominata utcnow() e selezionare Aggiungi.

      Flusso di lavoro A consumo

      Screenshot che mostra il flusso di lavoro A consumo, il riquadro delle azioni del mittente del batch, la casella del contenuto messaggio con cursore, l'editor di espressioni con la funzione utcNow e altri dettagli.

      Flusso di lavoro Standard

      Screenshot che mostra il flusso di lavoro standard, il pannello azioni mittente batch, la casella Contenuto messaggio con cursore, l'editor di espressioni con la funzione utcNow e altri dettagli.

  5. Configurare a questo punto una partizione per il batch.

    1. Nel riquadro azione mittente batch selezionare le proprietà seguenti nell'elenco Parametri avanzati :

      Proprietà Descrizione
      Nome della partizione Chiave di partizione univoca facoltativa da usare per dividere il batch di destinazione in subset logici e raccogliere messaggi in base a tale chiave.

      Per questo esempio, vedere i passaggi seguenti per aggiungere un'espressione che genera un numero casuale compreso tra uno e cinque.
      Id del messaggio Identificatore di messaggio facoltativo che rappresenta l'identificatore univoco globale generato (GUID) quando è vuoto. Per questo esempio, lasciare vuoto questo valore.
    2. Selezionare nella casella Nome partizione e selezionare l'opzione per l'editor di espressioni (icona della funzione).

    3. Nell'editor di espressioni immettere la funzione rand(1,6) e selezionare Aggiungi.

      Questo esempio genera un numero compreso tra uno e cinque. Quindi, stai dividendo questo batch in cinque partizioni numerate, che questa espressione imposta dinamicamente.

      Screenshot che mostra la funzione denominata rand per la suddivisione del batch in partizioni.

      Al termine, il flusso di lavoro del mittente batch risulta ora simile all'esempio seguente, in base al tipo di flusso di lavoro della tua app logica:

      Flusso di lavoro A consumo

      Screenshot che mostra il flusso di lavoro dell'app per la logica A consumo mittente del batch completato.

      Flusso di lavoro Standard

      Screenshot che mostra il flusso di lavoro dell'app per la logica Standard mittente del batch completato.

  6. Salvare il flusso di lavoro.

Testare i flussi di lavoro

Per testare la soluzione di invio in batch, lasciare in esecuzione i flussi di lavoro dell'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 di invio batch viene eseguita ogni minuto e genera un numero casuale compreso tra uno e cinque. Il mittente del 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 dei test, assicurarsi di disabilitare o eliminare il flusso di lavoro dell'app per la logica BatchSender per interrompere l'invio di messaggi ed evitare l'overload della posta in arrivo.