Ahí va un post de esos de copiar y pegar 🙂
Qué es una Aplicación Batch:
- Las aplicaciones Batch necesitan procesar grandes volúmenes de datos críticos de negocio de forma transaccional
- Un programa típico Batch normalmente:
- Lee un gran número de datos de una base de datos, ficheros o cola
- Procesa los datos de alguna forma
- Escribe los datos modificados
Spring Batch:
- es el primer framework Java para procesamiento Batch
- provee un framework altamente escalable, sencillo de usar y personalizable para desarrollo de aplicaciones Batch
- Spring Batch se basa en los patrones y prácticas de Spring permitiendo a los desarrolladores centrarse en la lógica de negocio.
- Versiones:
- 1.0 Febrero 2008
- 1.1 Agosto 2008
- 2.0 Abril 2009
Escenarios de uso de Aplicaciones Batch
- Commit batch periódicos
- Procesamiento batch concurrente
- Procesamiento masivo y en paralelo
- Reinicio manual o temporizado tras fallo
- Procesamiento secuencial de pasos dependientes (workflow-driven)
- Procesamiento parcial
Opciones de Procesamiento batch:
- Procesamiento normal en Batch dutante offline
- Batch concurrente / online
- Procesamiento en paralelo de varios Jobs a la vez
- Particionamiento: varias instancias del mismo Job a la vez
Por su fuente de entrada se pueden categorizar por:
- Aplicaciones Database-driven: dirigidas por valores recuperados de una BD
- Aplicaciones File-driven
- Aplicaciones Message-driven
- Aplicaciones Workflow-driven
CONCEPTOS SPRING BATCH
- Job:
- Entidad para encapsular todo un proceso batch.
- Compuesto de una serie de pasos (Steps) que tienen una relación lógica
- JobInstance:
- Es la ejecución de un Job
- Cada JobInstance puede tener múltiples intentos de ejecución (JobExecution)
- El JobInstance se considera terminado cuando alguno de sus intentos de ejecución tuvo éxito
- JobExecution:
- Es el intento de ejecución de un JobInstance, terminado con éxito o no
- Un JobInstace solo se considera terminado cuando alguno de sus JobExecution ha terminado con éxito.
- Tiene las siguientes propiedades:
- Status
- startTime, endTime,
- createTime, lastUpdate
- executionContext :valores que mete usuario para persistirse entre ejecuciones)
- failureException: excepciones durante la ejecución
- Step:
- objeto de dominio que encapsula de manera independiente una de toda la secuencia de fases de un Job
- StepExecution:
- representa un intento de ejecutar un Step
- Se crea una instancia de StepExecution cada vez que se intenta ejecutar un Step
- si un Step falla porque un Step anterior fallo no se persistira su ejecucion
- Tiene las siguientes propiedades:
- Status, exitStatus
- startTime, endTime
- executionContext
- readCount, writeCount
- commitCount, rollbackCount
- readSkipCount, processSkipCount, writeSkipCount
- ExecutionContext:
- Colección de elementos llave/valor que son persistidos y controlados por el propio framework que permiten al desarrollador almacenar valores que son persistidos y que están dentro del alcance de un StepExecution o un JobExecution
- Permite almacenar valores que permiten el reinicio de procesos desde un punto en particular.
- JobRepository:
- Es el mecanismo de persistencia que usan los ExecutionContext para los StepExecution y JobExecution
- Contiene operaciones CRUD
JobLauncher: representa el mecanismo para ejecutar un Job con ciertos JobParameters. ItemReader: Representa el obtener datos de entrada para un Step, un elemento (item) a la vez Cuando el ItemReader ha acabado de obtener los elementos indica que ya no hay más elementos que tomar regresando null. Varias implementaciones out-of-the-box ItemWriter: Representa la salida de un Step, un elemento a la vez. Varias implementaciones out-of-the-box ItemProcessor: representa el procesamiento de un elemento Mientras el ItemReader lee un elemento y el ItemWriter lo escribe, el ItemProcessor aplica transformaciones u otras reglas. Si el ItemProcessor determina que un elemento no es valido regresa null para indicar que el elemento no debe ser escrito
Modelo de Datos
Ejemplo:
Tipos de Ejecución:
Arquitectura Tipo:





Deja un comentario