< Volver al curso

6. Procesar datos con Batch Job


En la clase de hoy vamos a aprender cómo procesar datos con Batch Job. El procesamiento por lotes es una forma de procesar registros por lotes (Batch) o en colecciones. La principal ventaja de los trabajos por lotes es que se ejecutan en paralelo y, por lo tanto, proporcionan el máximo rendimiento.

¿Por qué utilizar Batch Job?

Utilizar Batch Jobs o trabajos por lotes son ideales en los siguientes escenarios:

  • Sincronizar dos sistemas en tiempo real.
  • Procesar archivos o registros de base de datos en otro sistema, comúnmente llamado ETL (Extract – Transform – Load).
  • Procesar datos masivos.
Funcionamiento Batch Job

En la clase anterior hablamos del For Each, que dividía una colección de datos «Collection» y procesaba posición a posición  de forma secuencial y síncrona, la segunda posición no se procesaba si la primera no había finalizado.

Por el contrario, la ventaja que nos proporciona el componente Batch Job es el procesamiento de esta colección de datos de forma asíncrona.

Esto es debido a que se separan todos los registros de la colección por bloques, indicados en el parámetro «Batch Block size» que se muestra a continuación:

 

Si llegan 1000 registros al Batch Job, el tiempo de ejecución de Mule creará las instancias «Threads» de Batch Jobs en función del valor Batch Block Size proporcionado, por ejemplo, 10 (instancias de procesamiento por lotes «Threads») * 100 (tamaño de bloque) = 1000 registros

Si se indica un valor de 100 y nos llegan 1000 registros, el evento de Mule calculará el número de instancias necesarias.

 

Procesamiento en paralelo

Para que el componente Batch Job consiga un procesamiento de los registros de forma asíncrona es necesario utilizar los bloques que se mencionaban en el apartado anterior.

Gracias a la utilización de bloques se logra separar la colección de datos, en el caso del ejemplo anterior, en 10 instancias. Estas 10 instancias, con 100 registros cada una, se ejecutarán de forma paralela.

Es necesario tener claro que dentro del bloque si existirá una ejecución secuencial y síncrona. A continuación os muestro un ejemplo en el que el Block Size es 10 y el número de registros totales 40.

 

 

En definitiva, los registros que tenemos en un Thread se procesarán de forma secuencial, pero comparándolo en el tiempo con el resto de Threads, el registro 1, 11, 21 y 31, lo estarán haciendo de forma paralela.

En la clase de hoy se explicará el componente con un ejemplo real, así que no os lo perdáis, que seguro que practicando os queda muchísimo más claro.

 

Sin más, Procesar datos con Batch Job ¡dentro vídeo!


El siguiente contenido solo está disponible para los miembros PRO.
Únete ahora

Clases del curso


< Volver al curso