Envío, recepción y procesamiento por lotes de mensajes en Azure Logic Apps
Se aplica a: Azure Logic Apps (consumo)
Para enviar y procesar mensajes juntos de una manera específica como grupos, puede crear una solución de procesamiento por lotes. Esta solución recopila mensajes en un lote y espera a que se cumplan los criterios especificados antes de liberar y procesar los mensajes en lote. El procesamiento por lotes puede reducir la frecuencia con la que aplicación lógica procesa los mensajes.
En esta guía paso a paso se muestra cómo compilar una solución de procesamiento por lotes creando dos aplicaciones lógicas en la misma suscripción y región de Azure, y en este orden:
La aplicación lógica "receptora de lotes", que acepta y recopila los mensajes en un lote hasta que se cumplan los criterios especificados para liberar y procesar esos mensajes. Asegúrese de crear primero este receptor de lotes para que más tarde pueda seleccionar el destino de los lotes cuando cree el remitente de lotes.
Una o varias aplicaciones lógicas "remitente de lotes", que envíen los mensajes a la receptora de lotes creada anteriormente.
El remitente del lote puede especificar una clave única que particione o divida el lote de destino en subconjuntos lógicos basándose en esa clave. Por ejemplo, un número de cliente es una clave única. De este modo, la aplicación receptora puede recopilar todos los elementos con la misma clave y procesarlos juntos.
Asegúrese de que el receptor y el remitente del lote compartan la misma suscripción y región de Azure. Si no es así, no puede seleccionar la receptora de lotes al crear la remitente de lotes, ya que no se verán entre ellas.
Prerrequisitos
Una cuenta y una suscripción de Azure. Si no tiene una suscripción, puede comenzar con una cuenta de Azure gratuita. También puede registrarse para obtener una suscripción de pago por uso.
Una cuenta de correo electrónico con cualquier proveedor de correo electrónico compatible con Azure Logic Apps
Importante
Si quiere usar el conector de Gmail, solo las cuentas empresariales de G-Suite pueden usar este conector sin restricciones en las aplicaciones lógicas. Si tiene una cuenta de consumidor de Gmail, puede usar este conector solo con servicios específicos aprobados por Google, o puede crear una aplicación cliente de Google para usarla en la autenticación con el conector de Gmail. Para más información, consulte Directivas de privacidad y seguridad de datos de los conectores de Google en Azure Logic Apps.
Conocimientos básicos de flujos de trabajo de aplicaciones lógicas
Para usar Visual Studio en lugar de Azure Portal, asegúrese de configurar Visual Studio para trabajar con Logic Apps.
Limitaciones
Solo puede comprobar el contenido de un lote después de la versión comparando el contenido publicado con el origen.
Solo puede liberar un lote al principio cambiando los criterios de versión en el receptor de lotes, que se describe en esta guía, mientras que el desencadenador sigue teniendo el lote. Sin embargo, el desencadenador usa los criterios de versión actualizados para los mensajes sin enviar.
Creación de la receptora de lotes
Antes de poder enviar mensajes a un lote, ese lote debe existir como el destino adonde enviar esos mensajes. Primero, debe crear la aplicación lógica "batch receiver", que comienza con el desencadenador Batch. De este modo, al crear la aplicación lógica "batch sender", podrá seleccionar la aplicación lógica batch receiver. La receptora de lotes continúa recopilando los mensajes hasta que se cumplan los criterios especificados para liberar y procesar esos mensajes. Si bien las receptoras de lotes no necesitan saber nada sobre las remitentes de lotes, estas últimas sí necesitan conocer el destino adonde enviar los mensajes.
En Azure Portal o Visual Studio, cree una aplicación lógica con este nombre:
BatchReceiver
.En el diseñador de flujo de trabajo, agregue el desencadenador Batch, que inicia el flujo de trabajo de la aplicación lógica. En el cuadro de búsqueda, escriba
batch
y seleccione este desencadenador: Mensajes de loteEstablezca las siguientes propiedades para la receptora de lotes:
Propiedad Descripción Batch Mode - Inline: para definir los criterios de versión en el desencadenador de lotes
- Cuenta de integración: para definir varias configuraciones de criterios de lanzamiento a través de una cuenta de integración. Con una cuenta de integración, puede mantener todas estas configuraciones en un mismo lugar, en lugar de en aplicaciones lógicas independientes.Batch Name El nombre del lote, que es "TestBatch" en este ejemplo, y solo se aplica al modo por lotes Inline Release Criteria Solo se aplica al modo por lotes Inline y selecciona los criterios que deben cumplirse antes de procesar cada lote: - Basado en el número de mensajes: se publica el lote en función del número de mensajes recopilados por el lote.
- Basado en el tamaño: se publica el lote en función del tamaño total en bytes de todos los mensajes recopilados por el lote.
- Programación: se publica el lote según la periodicidad de la programación, que especifica un intervalo y una frecuencia. En las opciones avanzadas, también puede seleccionar una zona horaria y proporcionar una fecha y hora de inicio.
- Seleccionar todo: se usan todos los criterios especificados.Message Count Número de mensajes que se recopilan en el lote, por ejemplo, 10 mensajes. El límite de un lote es de 8000 mensajes. Tamaño de lote Tamaño total en bytes que se recolectará en el lote, por ejemplo, 10 MB. El límite de tamaño de lote es de 80 MB. Programación Intervalo y frecuencia entre las publicaciones de lotes, por ejemplo, 10 minutos. La periodicidad mínima es de 60 segundos o 1 minuto. Los minutos fraccionarios se redondean eficazmente hasta 1 minuto. Para especificar una zona horaria o una fecha y hora de inicio, abra la lista Add new parameter (Agregar nuevo parámetro) y seleccione las propiedades correspondientes. Nota
Si cambia los criterios de publicación mientras el desencadenador aún tiene mensajes procesados por lote sin enviar, el desencadenador utiliza los criterios de publicación actualizados para administrar los mensajes no enviados.
En el siguiente ejemplo se muestran todos los criterios, pero para realizar sus pruebas, use solo uno:
Ahora, agregue una o varias acciones que procesen cada lote.
Para este ejemplo, agregue una acción que envíe un correo electrónico cuando se active el desencadenador de lotes. El desencadenador se ejecuta y envía un correo electrónico cuando el lote tiene 10 mensajes, llega a 10 MB o pasan 10 minutos.
En el desencadenador de lotes, seleccione New step (Nuevo paso).
En el cuadro de búsqueda, escriba
send email
como filtro. En función de su proveedor de correo electrónico, seleccione un conector de correo electrónico.Por ejemplo, si tiene una cuenta profesional o educativa, como @fabrikam.com o @fabrikam.onmicrosoft.com, seleccione el conector de Microsoft 365 Outlook. Si tiene una cuenta personal, como @outlook.com o @hotmail.com, seleccione el conector de Outlook.com. En este ejemplo, se usa el conector de Microsoft 365 Outlook.
Seleccione la acción "enviar un correo electrónico" para el proveedor, por ejemplo:
Si se le pide, inicie sesión en la cuenta de correo electrónico.
Establezca las propiedades de la acción que agregó.
En el cuadro Para, escriba la dirección de correo electrónico del destinatario. Para realizar pruebas, puede usar su propia dirección de correo electrónico.
En el cuadro Asunto, cuando aparezca la lista de contenido dinámico, seleccione el campo Nombre de la partición.
Más adelante, en el remitente de lotes, puede especificar una clave de partición única que divida el lote de destino en subconjuntos lógicos en los que puede enviar mensajes. Cada conjunto tiene un número único generado por la aplicación lógica remitente de lotes. Esta funcionalidad le permite usar un único lote con varios subconjuntos y definir cada subconjunto con el nombre que proporcione.
Importante
Una partición tiene un límite de 5000 mensajes o 80 MB. Si se cumple alguna de estas condiciones, Logic Apps puede liberar el lote, incluso cuando no se cumpla la condición de liberación definida.
En el cuadro Cuerpo, cuando aparezca la lista de contenido dinámico, seleccione el campo Id. del mensaje.
El diseñador de flujo de trabajo agrega automáticamente un bucle For each en torno a la acción para enviar correos electrónicos, debido a que esa acción trata la salida de la acción anterior como una colección, y no como un lote.
Guarde la aplicación lógica. Ahora ha creado una receptora de lotes.
Importante
Si usa Visual Studio, antes de continuar con la siguiente sección, asegúrese primero de implementar la aplicación lógica de recepción de lotes en Azure. En caso contrario, no podrá seleccionar la receptora de lotes cuando cree la remitente de lotes.
Creación de la remitente de lotes
Ahora cree una o más aplicaciones lógicas remitentes de lotes que envíen mensajes a la aplicación lógica receptora de lotes. En cada remitente de lotes, especifique el nombre de la receptora de lotes y del lote, el contenido del mensaje, y el resto de las opciones. Opcionalmente, también puede proporcionar una clave de partición única para dividir el lote en subconjuntos lógicos para recopilar mensajes con esa clave.
Asegúrese de que ya ha creado e implementado el receptor de lotes, de modo que, cuando cree el remitente de lotes, pueda seleccionar el receptor de lotes existente como lote de destino. Si bien las receptoras de lotes no necesitan saber nada sobre las remitentes de lotes, estas últimas deben saber adonde enviar los mensajes.
Asegúrese de que el receptor y el remitente de lotes compartan la misma región y suscripción de Azure. Si no es así, no puede seleccionar la receptora de lotes al crear la remitente de lotes, ya que no se verán entre ellas.
Cree otra aplicación lógica con este nombre:
BatchSender
En el cuadro de búsqueda, escriba
recurrence
como filtro. En la lista de desencadenadores, seleccione este desencadenador: PeriodicidadEstablezca el intervalo y la frecuencia para ejecutar la aplicación lógica remitente cada minuto.
Agregue una nueva acción para enviar mensajes a un lote.
En el desencadenador Recurrence, seleccione New step (Nuevo paso).
En el cuadro de búsqueda, escriba
batch
como filtro y seleccione esta acción: Choose a Logic Apps workflow with batch triggerAparece una lista que muestra solo las aplicaciones lógicas que tienen desencadenadores Batch y que existen en la misma región y suscripción de Azure que la aplicación lógica de envío de lotes.
En la lista de aplicaciones lógicas, seleccione la aplicación lógica receptora de lotes que creó anteriormente.
Importante
Si usa Visual Studio y no ve ningún receptor de lotes para seleccionar, compruebe que ha creado e implementado previamente el receptor de lotes en Azure. Si no lo ha hecho, aprenda a implementar la aplicación lógica receptora de lotes en Azure.
En la lista de acciones, seleccione esta acción: Batch_messages - <su-nombre-de-aplicación-lógica>.
Establezca las propiedades de la remitente de lotes:
Propiedad Descripción Batch Name El nombre de lote definido por la aplicación lógica receptora, TestBatch
en este ejemplo.Importante: el nombre del lote se valida en tiempo de ejecución y debe coincidir con el nombre especificado por la aplicación lógica receptora. Si cambia el nombre del lote, provocará un error en la remitente de lotes.
Message Content El contenido del mensaje que desea enviar Nota
Los valores de propiedad Trigger Name (Nombre de desencadenador) y Workflow (Flujo de trabajo) se rellenan automáticamente a partir de la aplicación lógica seleccionada.
En este ejemplo, agregue esta expresión, que inserta la fecha y hora actuales en el contenido del mensaje que envía al lote:
Haga clic en el cuadro Contenido del mensaje.
Cuando aparezca la lista de contenido dinámico, seleccione Expression (Expresión).
Escriba la expresión
utcnow()
y seleccione OK (Aceptar).
Ahora debe configurar una partición para el lote. En la acción
BatchReceiver
, abra la lista Add new parameter (Agregar nuevo parámetro) y seleccione estas propiedades:Propiedad Descripción Nombre de la partición Una clave de partición única opcional utilizada para dividir el lote de destino en subconjuntos lógicos y recopilar mensajes basándose en esa clave Id. de mensaje Un identificador de mensaje opcional que es un identificador único global (GUID) generado cuando está vacío En este ejemplo, en el cuadro Nombre de la partición agregue una expresión que genera un número aleatorio entre uno y cinco. Deje vacío el cuadro Id. de mensaje.
Haga clic en el cuadro Nombre de la partición para que aparezca la lista de contenido dinámico.
En la lista de contenido dinámico, seleccione Expresión.
Escriba la expresión
rand(1,6)
y elija OK (Aceptar).Esta función rand genera un número comprendido entre uno y cinco. Por tanto, va a dividir este lote en cinco particiones numeradas, que esta expresión establece dinámicamente.
Guarde la aplicación lógica. La aplicación lógica remitente tiene ahora un aspecto similar al de este ejemplo:
Comprobación de las aplicaciones lógicas
Para probar la solución de procesamiento por lotes, deje las aplicaciones lógicas en ejecución durante unos minutos. Pronto, empezará a recibir mensajes de correo electrónico en grupos de cinco, todos con la misma clave de partición.
La aplicación lógica del remitente del lote se ejecuta cada minuto y genera un número aleatorio de uno a cinco. El remitente del lote usa este número aleatorio como clave de partición para el lote de destino donde se envían los mensajes. Cada vez que el lote tiene cinco elementos con la misma clave de partición, la aplicación lógica receptora de lotes se activa y envía los correos electrónicos para cada mensaje.
Importante
Cuando haya terminado las pruebas, asegúrese de que deshabilita la aplicación lógica BatchSender
para detener el envío de mensajes y evitar la sobrecarga de la bandeja de entrada.