Compartir vía


Envío, recepción y procesamiento por lotes de mensajes en Azure Logic Apps

Se aplica a: Azure Logic Apps (consumo + estándar)

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. Por lo tanto, primero debe crear el flujo de trabajo de aplicación lógica "receptor de lotes", que comienza con el Desencadenador de Batch. De este modo, al crear el flujo de trabajo de aplicación lógica "remitente por lotes", puede seleccionar el flujo de trabajo de la aplicación lógica receptora de lotes. 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, cree un recurso de aplicación lógica con un flujo de trabajo en blanco.

    En este ejemplo se crea una aplicación lógica receptora de lotes y un flujo de trabajo denominado BatchReceiver.

  2. En el diseñador de flujos de trabajo, seleccione Agregar un desencadenador, y siga estos pasos generales para agregar el desencadenador de Operaciones por lotes denominado Desencadenador por lotes.

  3. Establezca las siguientes propiedades del desencadenador:

    Propiedad Descripción
    Modo
    (Solo flujos de trabajo de consumo)
    - Inline: para definir los criterios de versión en el desencadenador de lotes

    - cuenta de integración: Para definir varias configuraciones de criterios de versión a través de una cuenta de integración. Con una cuenta de integración, puede mantener estas configuraciones en un solo lugar en lugar de en recursos de aplicación lógica independientes.
    Nombre sección Nombre del lote. En Flujos de trabajo de Consumo, esta propiedad solo aparece cuando Modo se establece en, En línea. En este ejemplo se usa TestBatch.
    Release Criteria Criterios que se deben cumplir antes de procesar cada lote. De forma predeterminada, el desencadenador por lotes funciona mediante "modo insertado" donde se definen los criterios de liberación por lotes dentro del desencadenador de lotes.

    - 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 basada en: Libere el lote en función de una programación de periodicidad, que especifica un intervalo y una frecuencia. Opcionalmente, puede seleccionar una zona horaria y proporcionar una fecha y hora de inicio.

    Para usar todos los criterios especificados, seleccione todas las opciones.
    Message Count Número de mensajes que se recopilan en el lote, por ejemplo, 10 mensajes. El límite de mensajes por lotes es de 8 000 mensajes.
    Tamaño de lote Tamaño total de bytes para los mensajes que se van a recopilar en el lote, por ejemplo, 10 MB. El límite de tamaño del lote es de 80 MB.
    Periodicidad 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. Opcionalmente, puede seleccionar una zona horaria y proporcionar una fecha y hora de inicio.

    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:

    Captura de pantalla que muestra todos los criterios para Desencadenador por 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 por lotes, seleccione el signo más (+) >Agregar una acción.

    2. Siga estos pasos generales para agregar una acción que envíe un correo electrónico, en función del proveedor 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.

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

  6. Establezca las siguientes propiedades de acción:

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

    • Seleccione dentro del cuadro Asunto para ver las opciones de la lista de contenido dinámico (icono de rayo) y el editor de expresiones (icono de función). Seleccione el icono de rayo para abrir la lista de contenido dinámico y seleccione el campo denominado Nombre de partición.

      Captura de pantalla que muestra la lista de contenido dinámico y el campo seleccionado para la propiedad Nombre de 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 el flujo de trabajo de la aplicación lógica del remitente del lote. 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 condición, Azure Logic Apps podría liberar el lote, incluso cuando no se cumpla la condición de versión definida.

    • Seleccione dentro del cuadro Cuerpo, seleccione el icono de rayo para abrir la lista de contenido dinámico y seleccione el campo Id. de mensaje de 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 el ejemplo siguiente se muestra el panel de información después de seleccionar el cuadro de título Para cada en el diseñador donde Elementos por lotes es el nombre de la colección:

      Captura de pantalla que muestra la colección Elementos por lotes con salidas de operación anteriores.

  7. Guarde el flujo de trabajo. Ahora ha creado una receptora de lotes.

    Importante

    Si usa Visual Studio Code, antes de continuar con la sección siguiente, asegúrese de que primero implementar el recurso de aplicación lógica receptora por lotes en Azure. De lo contrario, no puede seleccionar el flujo de trabajo de la aplicación lógica del receptor de lotes al crear el flujo de trabajo de la aplicación lógica del remitente del lote.

Creación de la remitente de lotes

Ahora cree uno o varios flujos de trabajo de aplicación lógica de remitente por lotes que envíen mensajes al flujo de trabajo de la aplicación lógica del receptor 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 otro recurso de aplicación lógica y un flujo de trabajo denominado BatchSender.

    Nota:

    Si tiene un recurso de aplicación lógica Estándar, asegúrese de crear un flujo de trabajo con estado, no un flujo de trabajo sin estado porque el desencadenador de Periodicidad no está disponible para flujos de trabajo sin estado.

  2. Siga estos pasos generales para agregar el desencadenador de Programación denominado Periodicidad.

    En este ejemplo se establece el intervalo y la frecuencia para ejecutar el flujo de trabajo del remitente cada minuto.

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

    1. En el desencadenador Periodicidad, seleccione el signo más (+) > Agregar nueva acción.

    2. Siga estos pasos generales para agregar una acción de Operaciones por lotes denominada Enviar al flujo de trabajo de desencadenador por lotes (flujo de trabajo de Consumo) o Enviar a lote(flujo de trabajo Estándar).

    3. En función de si tiene un flujo de trabajo de Consumo o un flujo de trabajo Estándar, siga los pasos correspondientes:

      Flujo de trabajo de consumo

      Después de agregar la acción Enviar al flujo de trabajo del desencadenador por lotes, aparece una lista y muestra solo los recursos de la aplicación lógica con desencadenadores por lotes que existen en la misma suscripción de Azure y región de Azure que el recurso de aplicación lógica del remitente por lotes.

      1. En la lista de aplicaciones lógicas, seleccione la aplicación lógica creada anteriormente para usarla como receptor de lotes. Cuando aparezcan los desencadenadores disponibles, seleccione el desencadenador denominado Batch_messages.

        Captura de pantalla que muestra el flujo de trabajo Consumo con el desencadenador de Periodicidad y la acción de remitente por lotes que selecciona un recurso y un desencadenador de aplicación lógica del receptor por lotes.

        Importante

        Si usa Visual Studio Code y no ve receptores por lotes para seleccionar, compruebe que creó e implementó previamente el receptor por lotes en Azure. Si no lo ha hecho, aprenda cómo implementar el recurso de aplicación lógica del receptor por lotes en Azure.

      2. Cuando haya terminado, seleccione Agregar acción.

      Flujo de trabajo Estándar

      Después de agregar la acción Enviar al lote, el panel de acciones muestra las siguientes propiedades en el paso siguiente para especificar el nombre del lote, el contenido del mensaje, el nombre del flujo de trabajo y el nombre del desencadenador. Solo puede especificar información para un flujo de trabajo de aplicación lógica del receptor de lotes con un desencadenador por lotes que exista en la misma suscripción de Azure y región de Azure que la aplicación lógica del remitente del lote.

      Captura de pantalla que muestra el flujo de trabajo Estándar con el desencadenador de Periodicidad y la acción denominada Enviar al lote.

  4. Establezca las siguientes propiedades de acción del receptor de lotes:

    Propiedad Descripción
    Nombre sección Nombre del lote definido por la aplicación lógica receptora, que es 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 del receptor de lotes. Si cambia el nombre del lote, provocará un error en la remitente de lotes.
    Message Content El contenido del mensaje que desea enviar. Consulte el ejemplo siguiente para ver el valor que se va a usar.
    Nombre del flujo de trabajo
    (Solo flujos de trabajo estándar)
    Nombre del flujo de trabajo que tiene el desencadenador por lotes.
    Nombre del desencadenador Nombre del desencadenador por lotes en el flujo de trabajo de la aplicación lógica del receptor de lotes. En flujos de trabajo de Consumo, este valor se rellena automáticamente desde la aplicación lógica receptora de lotes seleccionada.
    Identificador del flujo de trabajo Identificador del flujo de trabajo que tiene el flujo de trabajo del receptor de lógica del receptor de lotes del nombre del desencadenador por lotes. En flujos de trabajo de Consumo, este valor se rellena automáticamente desde la aplicación lógica receptora de lotes seleccionada.

    En este ejemplo, para el valor de propiedad Contenido del mensaje, agregue la siguiente expresión, que inserta la fecha y hora actuales en el contenido del mensaje que envía al lote:

    1. Seleccione dentro del cuadro Contenido del mensaje para ver las opciones de contenido dinámico (icono de rayo) y editor de expresiones (icono de función).

    2. Seleccione el icono de función para abrir el editor de expresiones.

    3. En el editor, escriba la función denominada utcnow(), y seleccione Agregar.

      Flujo de trabajo de consumo

      Captura de pantalla que muestra el flujo de trabajo Consumo, el panel de acciones del remitente por lotes, el cuadro Contenido del mensaje con cursor, el editor de expresiones con la función utcNow y otros detalles.

      Flujo de trabajo Estándar

      Captura de pantalla que muestra el flujo de trabajo Estándar, el panel de acciones del remitente por lotes, el cuadro Contenido del mensaje con cursor, el editor de expresiones con la función utcNow y otros detalles.

  5. Ahora debe configurar una partición para el lote.

    1. En el panel de acciones del remitente por lotes, en la lista Parámetros avanzados y seleccione las siguientes propiedades:

      Propiedad Descripción
      Nombre de la partición Clave de partición única opcional que se usará para dividir el lote de destino en subconjuntos lógicos y recopilar mensajes basados en esa clave.

      Para este ejemplo, consulte los pasos siguientes para agregar una expresión que genere un número aleatorio entre uno y cinco.
      Id. de mensaje Identificador de mensaje opcional que es un identificador único global generado (GUID) cuando está vacío. En este ejemplo, deje este valor vacío.
    2. Seleccione dentro del cuadro Nombre de partición y seleccione la opción del editor de expresiones (icono de función).

    3. En el editor de expresiones, escriba la función rand(1,6), y seleccione Agregar.

      En este ejemplo se genera un número entre uno y cinco. Por tanto, va a dividir este lote en cinco particiones numeradas, que esta expresión establece dinámicamente.

      Captura de pantalla que muestra la función denominada rand para dividir el lote en particiones.

      Cuando haya terminado, el flujo de trabajo del remitente del lote ahora es similar al ejemplo siguiente, en función del tipo de flujo de trabajo de la aplicación lógica:

      Flujo de trabajo de consumo

      Captura de pantalla que muestra el flujo de trabajo de la aplicación lógica Consumo de remitente por lotes finalizado.

      Flujo de trabajo Estándar

      Captura de pantalla que muestra el flujo de trabajo de aplicación lógica Estándar del remitente por lotes finalizado.

  6. Guarde el flujo de trabajo.

Pruebe sus flujos de trabajo

Para probar la solución de procesamiento por lotes, deje los flujos de trabajo de la aplicación lógica 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 de realizar pruebas, asegúrese de deshabilitar o eliminar el flujo de trabajo de la aplicación lógica BatchSender para dejar de enviar mensajes y evitar sobrecargar la bandeja de entrada.