Enviar, receber e processar mensagens em lote nos Aplicativos Lógicos do Azure
Aplica-se a: Aplicativos Lógicos do Azure (Consumo + Padrão)
Para enviar e processar mensagens juntas 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 os critérios especificados sejam atendidos antes de liberar e processar as mensagens em lote. O envio em lote pode reduzir a frequência com que seu aplicativo lógico processa mensagens.
Este guia de instruções mostra como criar uma solução em lote criando dois aplicativos lógicos dentro da mesma assinatura do Azure, região do Azure e nesta ordem:
O aplicativo lógico "recetor 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 de criar primeiro esse recetor de lote para que possa selecionar posteriormente o destino do lote ao criar o remetente do lote.
Um ou mais aplicativos lógicos de "remetente em lote", que enviam as mensagens para o recetor de lote criado anteriormente.
O remetente do lote pode especificar uma chave exclusiva que particiona ou divide 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 recetor pode coletar todos os itens com a mesma chave e processá-los juntos.
O destinatário e o remetente do lote precisam compartilhar a mesma assinatura do Azure e a mesma região do Azure. Se isso não acontecer, você não poderá selecionar o recetor de lote ao criar o remetente do lote porque eles não são visíveis um para o outro.
Pré-requisitos
Uma conta e subscrição do Azure. Se não tiver uma subscrição, inscreva-se numa conta do Azure gratuita.
Uma conta de email com qualquer provedor de email suportado pelos Aplicativos Lógicos do Azure
Importante
Se você quiser usar o conector do Gmail, apenas as contas comerciais do G-Suite poderão usar esse conector sem restrições em aplicativos lógicos. Se tiver uma conta de consumidor do Gmail, pode utilizar este conector apenas com serviços específicos aprovados pela Google ou pode criar uma aplicação cliente Google para utilizar na autenticação com o conector do Gmail. Para obter mais informações, consulte Políticas de segurança e privacidade de dados para conectores do Google em Aplicativos Lógicos do Azure.
Conhecimento básico sobre fluxos de trabalho de aplicativos lógicos
Para usar o Visual Studio Code em vez do portal do Azure, certifique-se de configurar o Visual Studio Code para trabalhar com os Aplicativos Lógicos do Azure.
Limitações
Você só pode verificar o conteúdo em um lote após o lançamento, comparando o conteúdo liberado com a fonte.
Você pode liberar um lote antecipadamente apenas alterando os critérios de liberação no recetor do lote, que é descrito neste guia, enquanto o gatilho ainda tem o lote. No entanto, o gatilho usa os critérios de liberação atualizados para quaisquer mensagens não enviadas.
Criar recetor em lote
Antes de poder enviar mensagens para um lote, esse lote deve primeiro existir como o destino para onde você envia essas mensagens. Portanto, primeiro, você deve criar o fluxo de trabalho do aplicativo lógico "recetor de lote", que começa com o gatilho de lote. Dessa forma, ao criar o fluxo de trabalho do aplicativo lógico "remetente em lote", você pode selecionar o fluxo de trabalho do aplicativo lógico do recetor em lote. O recetor em lote continua coletando mensagens até que seus critérios especificados sejam atendidos para liberar e processar essas mensagens. Enquanto os recetores de lote não precisam saber nada sobre remetentes de lote, os remetentes de lote devem saber o destino para onde enviam as mensagens.
No portal do Azure, crie um recurso de aplicativo lógico com um fluxo de trabalho em branco.
Este exemplo cria um aplicativo lógico de recetor em lote e um fluxo de trabalho chamado BatchReceiver.
No designer de fluxo de trabalho, selecione Adicionar um gatilho e siga estas etapas gerais para adicionar o gatilho de Operações em lote chamado Gatilho de lote.
Defina as seguintes propriedades de gatilho:
Property Description Modo
(Apenas fluxos de trabalho de consumo)- Inline: Para definir critérios de liberação dentro do gatilho 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, em vez de em recursos separados do aplicativo lógico.Nome do lote O nome do lote. Em fluxos de trabalho de consumo, essa propriedade aparece somente quando Mode está definido como Inline. Este exemplo usa TestBatch. Critérios de Lançamento Os critérios a cumprir antes do processamento de cada lote. Por padrão, o gatilho de lote opera usando o "modo inline", onde você define os critérios de liberação de lote dentro do gatilho de lote.
- Com base na contagem de mensagens: libere o lote com base no número de mensagens coletadas pelo lote.
- Com base no tamanho: libere o lote com base no tamanho total em bytes para todas as mensagens coletadas por esse lote.
- Baseado em programação: libere o lote com base em um cronograma de recorrência, que especifica um intervalo e uma frequência. Opcionalmente, você pode selecionar um fuso horário e fornecer uma data e hora de início.
Para usar todos os critérios especificados, selecione todas as opções.Contagem de mensagens O número de mensagens a serem coletadas no lote, por exemplo, 10 mensagens. O limite de mensagens em lote é de 8.000 mensagens. Tamanho do lote O tamanho total de bytes para mensagens a serem coletadas no lote, por exemplo, 10 MB. O limite de tamanho do lote é de 80 MB. Periodicidade O intervalo e a frequência entre as liberações em lote, por exemplo, 10 minutos. A recorrência mínima é de 60 segundos ou 1 minuto. Os minutos fracionados são efetivamente arredondados para 1 minuto. Opcionalmente, você pode selecionar um fuso horário e fornecer uma data e hora de início. Nota
Se você alterar os critérios de liberação enquanto o gatilho ainda tiver mensagens em lote, mas 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 seu próprio teste, tente 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 e-mail quando o gatilho do lote é acionado. O gatilho é executado e envia um e-mail quando o lote tem 10 mensagens, atinge 10 MB ou após 10 minutos.
No gatilho de lote, selecione o sinal >de mais (+) Adicionar uma ação.
Siga estas etapas gerais para adicionar uma ação que envia um e-mail, com base no seu provedor de e-mail.
Por exemplo, se você tiver uma conta corporativa ou de estudante, como @fabrikam.com ou @fabrikam.onmicrosoft.com, selecione o conector do 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 do Microsoft 365 Outlook.
Se tal lhe for solicitado, inicie sessão na sua conta de e-mail.
Defina as seguintes propriedades de ação:
Na caixa Para, introduza o endereço de e-mail do destinatário. Para fins de teste, pode utilizar o seu próprio endereço de e-mail.
Selecione dentro da caixa Assunto para visualizar as opções da lista de conteúdo dinâmico (ícone de relâmpago) e do editor de expressões (ícone de função). Selecione o ícone de relâmpago para abrir a lista de conteúdo dinâmico e selecione o campo chamado Nome da partição.
Mais tarde, no remetente do lote, você pode especificar uma chave de partição exclusiva que divide o lote de destino em subconjuntos lógicos para enviar mensagens. Cada conjunto tem um número exclusivo que é gerado pelo fluxo de trabalho do aplicativo lógico do remetente em lote. Esse recurso permite que você use um único lote com vários subconjuntos e defina cada subconjunto com o nome fornecido.
Importante
Uma partição tem um limite de 5.000 mensagens ou 80 MB. Se qualquer uma das condições for atendida, os Aplicativos Lógicos do Azure poderão liberar o lote, mesmo quando sua condição de liberação definida não for atendida.
Selecione dentro da caixa Corpo , selecione o ícone de relâmpago para abrir a lista de conteúdo dinâmico e selecione o campo ID da mensagem de mensagem.
O designer de fluxo de trabalho adiciona automaticamente um Para cada loop em torno da ação de envio de email porque essa ação trata a saída da ação anterior como uma coleção, em vez de um lote.
O exemplo a seguir mostra o painel de informações depois de selecionar a caixa Para cada título no designer, onde Batched Items é o nome da coleção:
Salve seu fluxo de trabalho. Agora você criou um recetor em lote.
Importante
Se você estiver usando o Visual Studio Code, antes de continuar para a próxima seção, certifique-se de implantar primeiro seu recurso de aplicativo lógico de recetor em lote no Azure. Caso contrário, você não poderá selecionar o fluxo de trabalho do aplicativo lógico do recetor em lote ao criar o fluxo de trabalho do aplicativo lógico do remetente do lote.
Criar remetente de lote
Agora, crie um ou mais fluxos de trabalho do aplicativo lógico do remetente em lote que enviam mensagens para o fluxo de trabalho do aplicativo lógico do destinatário do lote. Em cada remetente de lote, você especifica o destinatário e o nome 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 anteriormente seu recetor de lote para que, ao criar seu remetente de lote, você possa selecionar o recetor de lote existente como o lote de destino. Enquanto os recetores de lote não precisam saber nada sobre remetentes de lote, os remetentes de lote devem saber para onde enviar mensagens.
Certifique-se de que o destinatário e o remetente do lote partilham a mesma região do Azure e a mesma subscrição do Azure. Se isso não acontecer, você não poderá selecionar o recetor de lote ao criar o remetente do lote porque eles não são visíveis um para o outro.
Crie outro recurso de aplicativo lógico e fluxo de trabalho chamado BatchSender.
Nota
Se você tiver um recurso de aplicativo lógico padrão, certifique-se de criar um fluxo de trabalho com monitoração de estado, não um fluxo de trabalho sem monitoração de estado, pois o gatilho de Recorrência não está disponível para fluxos de trabalho sem monitoração de estado.
Siga estas etapas gerais para adicionar o gatilho de agendamento chamado Recorrência.
Este exemplo define o intervalo e a frequência para executar o fluxo de trabalho do remetente a cada minuto.
Adicione uma nova ação para enviar mensagens a um lote.
No gatilho Recorrência, selecione o sinal >de mais (+) Adicionar nova ação.
Se você tem um fluxo de trabalho de Consumo ou um fluxo de trabalho Padrão, siga as etapas correspondentes:
Fluxo de trabalho de consumo
Depois de adicionar a ação de fluxo de trabalho Enviar para gatilho em lote, uma lista é exibida e mostra apenas os recursos do aplicativo lógico com gatilhos em lote que existem na mesma assinatura do Azure e na mesma região do Azure que o recurso do aplicativo lógico do remetente do lote.
Na lista de aplicativos lógicos, selecione o aplicativo lógico criado anteriormente para usar como recetor em lote. Quando os gatilhos disponíveis aparecerem, selecione o gatilho chamado Batch_messages.
Importante
Se você estiver usando o Visual Studio Code e não vir nenhum recetor em lote para selecionar, verifique se você criou e implantou anteriormente seu recetor em lote no Azure. Se ainda não o fez, saiba como implantar seu recurso de aplicativo lógico de recetor em lote no Azure.
Quando terminar, selecione Adicionar ação.
Fluxo de trabalho padrão
Depois de adicionar a ação Enviar para lote , o painel de ações mostra as seguintes propriedades na próxima etapa para você especificar o nome do lote, o conteúdo da mensagem, o nome do fluxo de trabalho e o nome do gatilho. Você pode especificar informações somente para um fluxo de trabalho de aplicativo lógico de recetor de lote com um gatilho de lote que existe na mesma assinatura do Azure e região do Azure que seu aplicativo lógico de remetente em lote.
Defina as seguintes propriedades de ação do recetor em lote:
Property Description Nome do lote O nome do lote definido pelo aplicativo lógico do recetor, que é TestBatch neste exemplo
Importante: O nome do lote é validado no tempo de execução e deve corresponder ao nome especificado pelo aplicativo lógico do recetor do lote. Alterar o nome do lote faz com que o remetente do lote falhe.Conteúdo da mensagem O conteúdo da mensagem que pretende enviar. Consulte o exemplo a seguir para obter o valor a ser usado. Nome do fluxo de trabalho
(Somente fluxos de trabalho padrão)O nome do fluxo de trabalho que tem o gatilho de lote. Nome do gatilho O nome do gatilho de lote no fluxo de trabalho do aplicativo lógico do recetor de lote. Nos fluxos de trabalho de consumo, esse valor é preenchido automaticamente a partir do aplicativo lógico do recetor em lote selecionado. ID do fluxo de trabalho A ID do fluxo de trabalho que tem o nome do gatilho de lote fluxo de trabalho do aplicativo lógico do recetor de lote. Nos fluxos de trabalho de consumo, esse valor é preenchido automaticamente a partir do aplicativo lógico do recetor em lote selecionado. Neste exemplo, para o valor da propriedade Message Content , adicione a seguinte expressão, que insere a data e hora atuais no conteúdo da mensagem que você envia para o lote:
Selecione dentro da caixa Conteúdo da mensagem para visualizar as opções de conteúdo dinâmico (ícone de relâmpago) e editor de expressões (ícone de função).
Selecione o ícone de função para abrir o editor de expressões.
No editor, digite a função chamada utcnow() e selecione Adicionar.
Fluxo de trabalho de consumo
Fluxo de trabalho padrão
Agora configure uma partição para o lote.
No painel de ação do remetente do lote, na lista Parâmetros avançados , selecione as seguintes propriedades:
Property Description Nome da partição Uma chave de partição exclusiva opcional para usar para dividir o lote de destino em subconjuntos lógicos e coletar mensagens com base nessa chave.
Para este exemplo, consulte as etapas a seguir para adicionar uma expressão que gera um número aleatório entre um e cinco.ID da mensagem Um identificador de mensagem opcional que é um GUID (identificador global exclusivo) gerado quando vazio. Para este exemplo, deixe esse valor vazio. Selecione dentro da caixa Nome da partição e selecione a opção para o editor de expressão (ícone de função).
No editor de expressão, digite a função rand(1,6) e selecione Adicionar.
Este exemplo gera um número entre um e cinco. Então, você está dividindo esse lote em cinco partições numeradas, que essa expressão define dinamicamente.
Quando terminar, o fluxo de trabalho do remetente em lote agora será semelhante ao exemplo a seguir, com base no tipo de fluxo de trabalho do aplicativo lógico:
Fluxo de trabalho de consumo
Fluxo de trabalho padrão
Salve seu fluxo de trabalho.
Teste seus fluxos de trabalho
Para testar sua solução de envio em lote, deixe os fluxos de trabalho do aplicativo lógico em execução por alguns minutos. Logo, você começa a receber e-mails em grupos de cinco, todos com a mesma chave de partição.
Seu aplicativo lógico de remetente em 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 para o qual você envia as mensagens. Cada vez que o lote tem cinco itens com a mesma chave de partição, seu aplicativo lógico do recetor de lote é acionado e envia e-mails para cada mensagem.
Importante
Quando terminar o teste, certifique-se de desativar ou excluir o fluxo de trabalho do aplicativo lógico BatchSender para parar de enviar mensagens e evitar sobrecarregar sua caixa de entrada.