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:
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.
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
Un account e una sottoscrizione di Azure. Se non si ha una sottoscrizione, è possibile creare un account Azure gratuito. In alternativa, iscriversi per ottenere una sottoscrizione con pagamento in base al consumo.
Un account di posta elettronica con un provider di posta elettronica supportato da App per la logica di Azure
Importante
Se si vuole usare il connettore Gmail, solo gli account G Suite Business possono usare questo connettore senza restrizioni nelle app per la logica. Se si dispone di un account Gmail consumer, è possibile usare questo connettore solo con servizi approvati da Google specifici oppure è possibile creare un'app client Google da usare per l'autenticazione con il connettore Gmail. Per altre informazioni, vedere Informative sulla privacy e sulla sicurezza dei dati per i connettori Google in App per la logica di Azure.
Conoscenza di base dei flussi di lavoro delle app per la logica
Per usare Visual Studio anziché il portale di Azure, assicurarsi di configurare Visual Studio per l'uso di App per la logica.
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.
In portale di Azure o Visual Studio creare un'app per la logica con questo nome:
BatchReceiver
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
batch
e selezionare questo trigger: Messaggi batchImpostare 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:
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.
Nel trigger batch selezionare Nuovo passaggio.
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.
Selezionare l'azione "Invia un messaggio di posta elettronica" per il provider, ad esempio:
Se richiesto, accedere all'account di posta elettronica.
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 .
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.
Salvare l'app per la logica. È stato creato un ricevitore di batch.
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.
Creare un'altra app per la logica con questo nome:
BatchSender
Nella casella di ricerca immettere
recurrence
come filtro. Nell'elenco di trigger selezionare questo trigger: RicorrenzaImpostare l'intervallo e la frequenza per eseguire l'app per la logica del mittente ogni minuto.
Aggiungere una nuova azione per l'invio di messaggi a un batch.
Nel trigger Ricorrenza selezionare Nuovo passaggio.
Nella casella di ricerca immettere
batch
come filtro e selezionare questa azione: Scegliere un flusso di lavoro app per la logica con trigger batchViene 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.
Nell'elenco app per la logica selezionare l'app per la logica del ricevitore batch creata in precedenza.
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.
Nell'elenco azioni selezionare questa azione: Batch_messages - <your-logic-app-name>
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 esempioImportante: 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:
Fare clic all'interno della casella contenuto messaggio.
Quando viene visualizzato l'elenco contenuto dinamico, selezionare Espressione.
Immettere l'espressione
utcnow()
e selezionare OK.
Configurare a questo punto una partizione per il batch. Nell'azione aprire l'elenco
BatchReceiver
Aggiungi 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.
Fare clic all'interno della casella Nome della partizione in modo che venga visualizzato l'elenco di contenuti dinamici.
Nell'elenco di contenuto dinamico selezionare Espressione.
Immettere l'espressione
rand(1,6)
e quindi selezionare OK.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.
Salvare l'app per la logica. L'app per la logica appare ora simile a questo esempio:
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.