Enviar, receber e processar em lote mensagens nos Aplicativos Lógicos do Azure
Aplica-se a: Aplicativos Lógicos do Azure (Consumo)
Para enviar e processar mensagens em conjunto de uma maneira específica como grupos, você pode criar uma solução de lote. Essa solução coleta mensagens em um lote e aguarda até que seus critérios especificados sejam atendidos antes de liberar e processar as mensagens em lote. Os lotes podem reduzir a frequência com que seu aplicativo lógico processa mensagens.
Este guia prático mostra como criar uma solução em lote, criando dois aplicativos lógicos na mesma assinatura do Azure, região do Azure e nesta ordem:
O aplicativo lógico "receptor em lote", que aceita e coleta mensagens em um lote até que seus critérios especificados sejam atendidos para liberar e processar essas mensagens. Certifique-se primeiro de criar este receptor do lote para, em seguida, selecionar o destino do lote ao criar o remetente do lote.
Um ou mais aplicativos lógicos "remetente em lote", que enviam as mensagens para o destinatário do lote criado anteriormente.
O remetente do lote pode especificar uma chave exclusiva que particione ou divida o lote de destino em subconjuntos lógicos com base nessa chave. Por exemplo, um número de cliente é uma chave exclusiva. Dessa forma, o aplicativo receptor pode coletar todos os itens com a mesma chave e processá-los juntos.
O destinatário e o remetente do lote precisam compartilhar a assinatura e a região do Azure. Caso contrário, não será possível selecionar o receptor do lote ao criar o remetente do lote porque não estarão visíveis um para o outro.
Pré-requisitos
Uma conta e uma assinatura do Azure. Se você não tiver uma assinatura, poderá iniciar com uma conta gratuita do Azure. Ou, inscreva-se para uma assinatura de Pagamento Conforme o Uso.
Uma conta de email com qualquer provedor de email com suporte dos Aplicativos Lógicos do Azure
Importante
Se você quiser usar o conector do Gmail, somente as contas comerciais do G Suite poderão usar esse conector sem restrição nos aplicativos lógicos. Se você tiver uma conta de consumidor do Gmail, poderá usar esse conector somente com serviços específicos do Google aprovados ou poderá criar um aplicativo cliente do Google para usar para autenticação com o conector do Gmail. Para obter mais informações, confira Políticas de privacidade e segurança de dados para os conectores do Google nos Aplicativos Lógicos do Azure.
Conhecimento básico sobre fluxos de trabalho de aplicativos lógicos
Para usar o Visual Studio em vez do portal do Azure, certifique-se de configurar o Visual Studio para trabalhar com Aplicativos Lógicos.
Limitações
Só é possível verificar o conteúdo de um lote após a liberação, comparando o conteúdo liberado com a origem.
Só é possível liberar um lote antecipadamente alterando os critérios de liberação no receptor do lote, descritos nesse guia, enquanto o gatilho ainda estiver com o lote. No entanto, o gatilho usa os critérios de liberação atualizados para todas as mensagens não enviadas.
Criar destinatário do lote
Antes de enviar mensagens para um lote, esse lote deverá existir primeiro como o destino para o qual essas mensagens serão enviadas. Portanto, primeiro, é necessário criar o aplicativo lógico "receptor do lote" que inicia com o gatilho do Lote. Dessa forma, ao criar o aplicativo lógico "remetente do lote", será possível selecionar o aplicativo lógico do receptor do lote. O receptor do lote continuará coletando mensagens até que seus critérios especificados sejam atendidos para liberar e processar essas mensagens. Embora os receptores dos lotes não precisem saber nada sobre os remetentes dos lotes, os remetentes dos lotes deverão saber o destino para onde enviarão as mensagens.
No portal do Azure ou no Visual Studio, crie um aplicativo lógico com este nome:
BatchReceiver
No designer de fluxo de trabalho, adicione o gatilho Lote, que dá início ao seu fluxo de trabalho de aplicativo lógico. Na caixa de pesquisa, insira
batch
e selecione este gatilho: Mensagens em loteDefina estas propriedades para o receptor do lote:
Propriedade Descrição Modo de lote - Inline: para definir os critérios de liberação dentro do acionador de lote
- Conta de Integração: para definir várias configurações de critérios de liberação por meio de uma conta de integração. Com uma conta de integração, você pode manter essas configurações em um só lugar e não em aplicativos lógicos separados.Nome do lote O nome do seu lote, que é "TestBatch" neste exemplo, e se aplica apenas ao modo em lote Inline Critérios de liberação Aplica-se somente ao modo em lote Embutido e selecione os critérios a serem atendidos antes do processamento de cada lote: - Baseado na contagem de mensagens: libere o lote com base no número de mensagens coletadas pelo lote.
- Baseado no tamanho: libere o lote com base no tamanho total em bytes de todas as mensagens coletadas por esse lote.
- Agendamento: libere o lote com base em uma agenda de recorrência, que especifica um intervalo e a frequência. Nas opções avançadas, você também pode selecionar um fuso horário e fornecer uma data e hora de início.
- Selecionar tudo: usar todos os critérios especificados.Contagem de mensagens O número de mensagens a coletar no lote, por exemplo, 10 mensagens. O limite de um lote é 8.000 mensagens. Tamanho do lote O tamanho total em bytes para coletar no lote, por exemplo, 10 MB. O limite de tamanho de um lote é de 80 MB. Agenda O intervalo e a frequência entre lançamentos de lote, por exemplo, 10 minutos. A recorrência mínima é de 60 segundos ou 1 minuto. Os valores de fração de minutos são arredondados para 1 minuto. Para especificar um fuso horário ou uma data e hora de início, abra a lista Adicionar novo parâmetro e selecione as propriedades correspondentes. Observação
Se você alterar os critérios de liberação enquanto o gatilho ainda tiver mensagens em lote não enviadas, o gatilho usará os critérios de liberação atualizados para lidar com as mensagens não enviadas.
Este exemplo mostra todos os critérios, mas para seus próprios testes, experimente apenas um critério:
Agora adicione uma ou mais ações que processam cada lote.
Para este exemplo, adicione uma ação que envia um email quando o acionador em lote é disparado. O gatilho é executado e envia um email quando o lote tem 10 mensagens, atinge 10 MB ou após 10 minutos.
No gatilho do lote, selecione Nova etapa.
Na caixa de pesquisa, insira
send email
como o filtro. Com base em seu provedor de email, selecione um conector de email.Por exemplo, se você tiver uma conta corporativa ou de estudante, como @fabrikam.com ou @fabrikam.onmicrosoft.com, selecione o conector Microsoft 365 Outlook. Se você tiver uma conta pessoal, como @outlook.com ou @hotmail.com, selecione o conector Outlook.com. Este exemplo usa o conector Microsoft 365 Outlook.
Selecione a ação "enviar um e-mail" para seu provedor, por exemplo:
Se solicitado, entre em sua conta de email.
Defina as propriedades da ação que você adicionou.
Na caixa Para, insira o endereço de email do destinatário. Para fins de teste, você pode usar seu próprio endereço de email.
Na caixa Assunto, quando a lista de conteúdo dinâmico aparecer, selecione o campo Nome da Partição.
Posteriormente, no remetente do lote, você pode especificar uma chave de partição exclusiva que divide o lote de destino em subconjuntos lógicos para os quais você pode enviar mensagens. Cada conjunto possui um número exclusivo gerado pelo aplicativo lógico do remetente em lote. Esse recurso permite o uso de um único lote com várias subconjuntos e define cada subconjunto com o nome fornecido por você.
Importante
Uma partição tem um limite de 5.000 mensagens ou 80 MB. Se uma das condições for atendida, os Aplicativos Lógicos poderão liberar o lote, mesmo quando sua condição de liberação definida não for atendida.
Na caixa Body, quando a lista de conteúdo dinâmico aparecer, selecione o campo Message Id.
O designer de fluxo de trabalho adiciona automaticamente um loop For each à ação de enviar emails porque essa ação trata a saída da ação anterior como uma coleção e não como um lote.
Salve seu aplicativo lógico. Você criou agora um receptor de lote.
Importante
Se você estiver usando o Visual Studio, antes de prosseguir para a próxima seção, certifique-se de primeiro implantar seu aplicativo lógico destinatário do lote no Azure. Caso contrário, não será possível selecionar o receptor do lote ao criar o remetente do lote.
Criar remetente em lote
Agora crie um ou mais aplicativos de lógica de remetente em lote que enviem mensagens para o aplicativo lógico de recebimento em lote. Em cada remetente do lote, você especifica o nome do lote e do destinatário do lote, o conteúdo da mensagem e quaisquer outras configurações. Opcionalmente, você pode fornecer uma chave de partição exclusiva para dividir o lote em subconjuntos lógicos para coletar mensagens com essa chave.
Certifique-se de que você criou e implantou o receptor do lote anteriormente, assim, ao criar o remetente do lote, será possível selecionar o receptor do lote existente como o lote de destino. Embora os receptores dos lotes não precisem saber nada sobre os remetentes dos lotes, os remetentes dos lotes deverão saber para onde enviarão as mensagens.
Certifique-se de que o receptor do lote e o remetente do lote compartilham a mesma região do Azure e a assinatura do Azure. Caso contrário, não será possível selecionar o receptor do lote ao criar o remetente do lote porque não estarão visíveis um para o outro.
Crie outro aplicativo lógico com este nome:
BatchSender
Na caixa de pesquisa, insira
recurrence
como o filtro. Na lista de gatilhos, selecione este gatilho: RecorrênciaDefina o intervalo e a frequência de execução do aplicativo lógico remetente como a cada minuto.
Adicione uma nova ação para enviar mensagens para um lote.
Sob o gatilho de Recorrência, selecione Nova etapa.
Na caixa de pesquisa, insira
batch
como filtro e selecione esta ação: Escolher um fluxo de trabalho dos Aplicativos Lógicos com gatilho em lotesUma lista é exibida e mostra apenas os aplicativos lógicos que têm gatilhos em lotes e existem na mesma região do Azure e assinatura do Azure que seu aplicativo lógico de remetente do lote.
Na lista de aplicativos lógicos, selecione o aplicativo lógico do destinatário do lote que você criou anteriormente.
Importante
Se você estiver usando o Visual Studio e não vir nenhum receptor em lote para selecionar, verifique se você criou e implantou anteriormente o receptor do lote no Azure. Se ainda não o fez, saiba como implantar seu aplicativo de lógica do receptor de lote no Azure.
Na lista de ações, selecione esta ação: Batch_messages - <your-logic-app-name>
Defina propriedades do remetente de lote:
Propriedade Descrição Nome do lote O nome do lote definido pelo aplicativo lógico do receptor, que é TestBatch
neste exemploImportante: o nome do lote é validado no runtime e deve corresponder ao nome especificado pelo aplicativo lógico do receptor. Alterar o nome do lote faz com que o remetente do lote falhe.
Conteúdo da mensagem O conteúdo da mensagem que você deseja enviar Observação
Os valores de propriedade Nome do Gatilho e Fluxo de Trabalho são preenchidos automaticamente do aplicativo lógico selecionado.
Para este exemplo, adicione essa expressão, que insere a data e a hora atuais no conteúdo da mensagem que você envia ao lote:
Clique dentro de o conteúdo da mensagem caixa.
Quando a lista de conteúdo dinâmico aparecer, selecione Expressão.
Insira a expressão
utcnow()
e selecione Ok.
Agora, configure uma partição para o lote. Na ação
BatchReceiver
, abra a lista Adicionar novo parâmetro e selecione estas propriedades:Propriedade Descrição Nome da Partição Uma chave de partição exclusiva opcional a ser usada para dividir o lote de destino em subconjuntos lógicos e coletar mensagens com base nessa chave Id da mensagem Um identificador de mensagem opcional que é um identificador global exclusivo gerado (GUID) quando estiver vazio Para este exemplo, na caixa Partition Name, adicione uma expressão que gere um número aleatório entre um e cinco. Deixe a caixa ID da mensagem vazia.
Clique dentro de nome da partição caixa para que apareça na lista de conteúdo dinâmica.
Na lista de conteúdo dinâmico, selecione Expressão.
Insira a expressão
rand(1,6)
e, em seguida, selecione Ok.Essa função rand gera um número entre um e cinco. Portanto, você está dividindo esse lote em cinco partições numeradas, definidas dinamicamente por esta expressão.
Salve seu aplicativo lógico. Seu aplicativo lógico remetente agora parece com este exemplo:
Testar seus aplicativos lógicos
Para testar sua solução de envio em lote, deixe seus aplicativos lógicos em execução por alguns minutos. Em breve, você começará a receber emails em grupos de cinco, todos com a mesma chave de partição.
O aplicativo de lógica do remetente do lote é executado a cada minuto e gera um número aleatório entre um e cinco. O remetente do lote usa esse número aleatório como a chave de partição para o lote de destino ao qual você envia as mensagens. Cada vez que o lote tem cinco itens com a mesma chave de partição, o aplicativo de lógica de recebimento do lote dispara e envia mensagens para cada mensagem.
Importante
Quando você terminar o teste, desabilite o aplicativo lógico BatchSender
para interromper o envio de mensagens e evitar a sobrecarga de sua caixa de entrada.