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:

  1. 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.

  2. 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

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.

  1. En Azure Portal o Visual Studio, cree una aplicación lógica con este nombre: BatchReceiver.

  2. 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 lote

    Adición del desencadenador

  3. Establezca 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:

    Proporcionar detalles del desencadenador de lotes

  4. 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.

    1. En el desencadenador de lotes, seleccione New step (Nuevo paso).

    2. 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.

    3. Seleccione la acción "enviar un correo electrónico" para el proveedor, por ejemplo:

      Seleccione la acción

  5. Si se le pide, inicie sesión en la cuenta de correo electrónico.

  6. 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.

      En la lista de contenido dinámico, seleccione

      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.

      En

  7. Guarde la aplicación lógica. Ahora ha creado una receptora de lotes.

    Guardado de la aplicación lógica

    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.

  1. Cree otra aplicación lógica con este nombre: BatchSender

    1. En el cuadro de búsqueda, escriba recurrence como filtro. En la lista de desencadenadores, seleccione este desencadenador: Periodicidad

      Adición del desencadenador Periodicidad

    2. Establezca el intervalo y la frecuencia para ejecutar la aplicación lógica remitente cada minuto.

      Establecer la frecuencia y el intervalo del desencadenador Recurrence

  2. Agregue una nueva acción para enviar mensajes a un lote.

    1. En el desencadenador Recurrence, seleccione New step (Nuevo paso).

    2. En el cuadro de búsqueda, escriba batch como filtro y seleccione esta acción: Choose a Logic Apps workflow with batch trigger

      Seleccione

      Aparece 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.

    3. En la lista de aplicaciones lógicas, seleccione la aplicación lógica receptora de lotes que creó anteriormente.

      Seleccionar la aplicación lógica receptora de lotes

      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.

    4. En la lista de acciones, seleccione esta acción: Batch_messages - <su-nombre-de-aplicación-lógica>.

      Seleccione esta acción:

  3. 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:

    1. Haga clic en el cuadro Contenido del mensaje.

    2. Cuando aparezca la lista de contenido dinámico, seleccione Expression (Expresión).

    3. Escriba la expresión utcnow() y seleccione OK (Aceptar).

      En

  4. 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.

    1. Haga clic en el cuadro Nombre de la partición para que aparezca la lista de contenido dinámico.

    2. En la lista de contenido dinámico, seleccione Expresión.

    3. Escriba la expresión rand(1,6) y elija OK (Aceptar).

      Establecer una partición para el lote de destino

      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.

  5. Guarde la aplicación lógica. La aplicación lógica remitente tiene ahora un aspecto similar al de este ejemplo:

    Guardar la aplicación lógica remitente

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.

Pasos siguientes