Enviar, receber e processar em lote mensagens nos Aplicativos Lógicos do Azure
Aplica-se a: Aplicativos Lógicos do Azure (Consumo + Padrão)
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 tem uma assinatura, inscreva-se em uma conta gratuita do Azure.
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 Code em vez do portal do Azure, certifique-se de configurar o Visual Studio Code para trabalhar com Aplicativos Lógicos do Azure.
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 Acionador de Lote. Dessa forma, ao criar o fluxo de trabalho do aplicativo lógico "remetente do lote", será possível selecionar o fluxo de trabalho do 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, crie um recurso de aplicativo lógico com um fluxo de trabalho em branco.
Este exemplo cria um aplicativo lógico de receptor em lote e um fluxo de trabalho chamado BatchReceiver.
No designer de fluxo de trabalho, selecione Adicionar um acionadore siga estas etapas gerais para adicionar o acionador de Operações do Lote chamado Acionador do Lote.
Defina as seguintes propriedades do acionador:
Propriedade Descrição Modo
(Somente fluxos de trabalho de consumo)- 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 recursos de aplicativos lógicos separados.Nome do lote O nome do lote. Em fluxos de trabalho de Consumo, essa propriedade aparece somente quando o Modo é definido como Embutido. Este exemplo usa TestBatch. Critérios de liberação Os critérios a serem atendendo antes de processar cada lote. Por padrão, o acionador em lote opera usando o "modo embutido" em que você define os critérios de liberação em lote dentro do acionador de 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.
- Baseado em agendamento: libere o lote com base em uma agenda de recorrência, que especifica um intervalo e a 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 coletar 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 as mensagens a serem coletadas no lote, por exemplo, 10 MB. O limite de tamanho do lote é de 80 MB. Recorrência 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. Opcionalmente, você pode selecionar um fuso horário e fornecer uma data e hora de início. 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 acionador de lote, selecione o sinal de adição (+) >Adicionar uma ação.
Siga estas etapas gerais para adicionar uma ação que envia um email, com base em seu provedor 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.
Se solicitado, entre em sua conta de email.
Defina as seguintes propriedades de ação:
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.
Selecione dentro da caixa Assunto para exibir as opções da lista de conteúdo dinâmico (ícone relâmpago) e do editor de expressão (ícone de função). Selecione o ícone relâmpago para abrir a lista de conteúdo dinâmico e selecione o campo chamado 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 fluxo de trabalho do 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 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 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 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.
O exemplo a seguir mostra o painel de informações depois que você seleciona a caixa Para cada title no designer em que Itens em Lote é o nome da coleção:
Salve seu fluxo de trabalho. Você criou agora um receptor de lote.
Importante
Se você estiver usando o Visual Studio Code, 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, você não poderá selecionar o fluxo de trabalho do aplicativo lógico do receptor em lote ao criar o fluxo de trabalho do aplicativo lógico do remetente em lote.
Criar remetente em lote
Agora, crie um ou mais fluxos de trabalho de aplicativo lógico do remetente em lote que enviam mensagens para o fluxo de trabalho do aplicativo lógico do receptor do 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 recurso de aplicativo lógico e um fluxo de trabalho chamado BatchSender.
Observação
Se você tiver um recurso de aplicativo lógico Standard, crie um fluxo de trabalho com estado, não um fluxo de trabalho sem estado porque o acionador Recorrência não está disponível para fluxos de trabalho sem estado.
Siga estas etapas gerais para adicionar o gatilho Agendar denominado de 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 para um lote.
No acionador Recorrência, selecione o sinal de adição (+)>Adicionar nova ação.
Com base em se você possui um fluxo de trabalho de Consumo ou Standard, siga as etapas correspondentes:
Fluxo de trabalho de Consumo
Depois de adicionar a ação Enviar para fluxo de trabalho do acionador de lote, uma lista será exibida e mostrará apenas os recursos do aplicativo lógico com acionadores de lote que existem na mesma assinatura do Azure e na região do Azure que o recurso de aplicativo lógico do remetente em lote.
Na lista de aplicativos lógicos, selecione o aplicativo lógico criado anteriormente para usar como o receptor do lote. Quando os acionadores disponíveis aparecerem, selecione o acionador chamado Batch_messages.
Importante
Se você estiver usando o Visual Studio Code 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 recurso de aplicativo lógico do receptor de lote no Azure.
Quando terminar, selecione Adicionar ação.
Fluxo de trabalho Standard
Depois de adicionar a ação Enviar ao lote, o painel de ação mostrará as seguintes propriedades na próxima etapa para especificar o nome do lote, o conteúdo da mensagem, o nome do fluxo de trabalho e o nome do acionador. Você pode especificar informações apenas para um fluxo de trabalho de aplicativo lógico de receptor em acionador de lote que existe na mesma assinatura do Azure e na região do Azure que o aplicativo lógico do remetente em lote.
Defina as seguintes propriedades de ação do receptor em lote:
Propriedade Descrição Nome do lote O nome do lote definido pelo aplicativo lógico do receptor, que é TestBatch neste exemplo
Importante: o nome do lote é validado no runtime e deve corresponder ao nome especificado pelo aplicativo lógico do receptor de lote. 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. Veja o exemplo a seguir para o valor a ser usado. Nome do fluxo de trabalho
(Somente fluxo de trabalho Standard)O nome do fluxo de trabalho que tem o acionador de lote. Nome do Acionador O nome do acionador de lote no fluxo de trabalho do aplicativo lógico do receptor do lote. Em fluxos de trabalho de Consumo, esse valor é preenchido automaticamente do aplicativo lógico do receptor do lote selecionado. ID do Fluxo de Trabalho A ID do fluxo de trabalho que tem o fluxo de trabalho do aplicativo lógico do receptor do lote do nome do acionador de lote. Em fluxos de trabalho de Consumo, esse valor é preenchido automaticamente do aplicativo lógico do receptor do lote selecionado. Neste exemplo, para o valor da propriedade Conteúdo da Mensagem, adicione a seguinte expressão, que insere a data e a hora atuais no conteúdo da mensagem que você envia para o lote:
Selecione dentro da caixa Conteúdo da Mensagem para exibir as opções de conteúdo dinâmico (ícone relâmpago) e editor de expressão (ícone de função).
Selecione o ícone de função para abrir o editor de expressões.
No editor, insira a função chamada utcnow()e selecione Adicionar.
Fluxo de trabalho de Consumo
Fluxo de trabalho Standard
Agora, configure uma partição para o lote.
No painel de ação do remetente em lote, na lista Parâmetros Avançados e selecione as seguintes 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.
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 identificador global exclusivo gerado (GUID) quando estiver 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, insira a função rand(1,6)e selecione Adicionar.
Este exemplo 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.
Quando terminar, o fluxo de trabalho do remetente em lote 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 Standard
Salve seu fluxo de trabalho.
Testar 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. 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 terminar de testar, certifique-se de desabilitar ou excluir o fluxo de trabalho do aplicativo lógico BatchSender para parar de enviar mensagens e evitar sobrecarregar sua caixa de entrada.