2009-10-22 20 views
45

Estoy tratando de aprender Spring Batch, pero el startup guide es muy confuso. Los comentarios como¿Cómo puedo comenzar con Spring Batch?

Usted puede obtener una idea bastante buena sobre cómo configurar un puesto de trabajo mediante el examen de las pruebas unitarias en el paquete org.springframework.batch.sample (en src/main/java) y la configuración en src/main/resources/jobs.

no son exactamente útiles. ¡También encuentro el proyecto de muestra muy complicado (17 espacios de nombres no vacíos con 109 clases)! ¿Hay un lugar más simple para comenzar con Spring Batch?

+2

Estoy de acuerdo. Explorar el framework ahora y las muestras no son exactamente amigables para novatos :) –

Respuesta

35
+1

Para agregar a esto, si alguien está buscando una forma de lanzar Spring Batch usando Quartz (scheduler), busque quartz-job-launcher-context.xml en src/main/resources de las muestras. –

+1

Parece que los primeros 3 enlaces están desactualizados y 2 últimos enlaces son erróneos. Y no parece haber ningún libro útil sobre esto también ... ¿Alguna sugerencia, muchachos? – wakandan

+1

Solo para aclarar el comentario de @James ...the _samples_ son los de la primavera Distribución por lotes –

4

Antes de saltar en el vagón Spring Batch, es posible que desee leer lo que el propio cletus de SO tiene que decir sobre sus deficiencias:

http://www.cforcoding.com/2009/07/spring-batch-or-how-not-to-design-api.html.

Recientemente evalué Spring Batch, y lo rechacé rápidamente una vez que me di cuenta de que no agregaba nada a mi proyecto aparte de la hinchazón y la sobrecarga. Spring Batch eventualmente se puede convertir en un producto OK (al igual que EJB lo hizo bien esta vez), pero por el momento se ve sospechosamente como una solución en busca de un problema.

+0

Ya lo leí. Parece que será útil para lo que estoy tratando de hacer (y por razones de arquitectura, de todos modos, tengo que usar Spring). Sin embargo, me preocupa la complejidad (horribles archivos de configuración complejos). En resumen, todavía estoy evaluando yo mismo, por lo que hice la pregunta. –

+0

@C. Ross: es perfectamente posible usar Spring en combinación con Quartz (para programación) y evitar Spring Batch por completo. Puede usar un patrón de estrategia para generalizar trabajos y pasos, y puede hacer avanzar fácilmente su propia persistencia almacenando estados transaccionales en sus datos. Eso es lo que terminamos haciendo, y está funcionando bien. Simplemente no veo que Spring Batch ofrezca nada de valor para compensar sus dolores de cabeza. – rtperson

+1

Los sistemas por lotes pueden ser mucho más que solo pasos y trabajos. Si eso es todo lo que necesita, está bien, pero si necesita funcionalidad adicional, como funcionalidad de repetición y reintentos, procesamiento en paralelo, etc., Spring Batch puede ser una buena solución. – Steve

6

Acepto que la guía del usuario es muy confusa (en comparación con la guía del usuario de Spring Core en cualquier caso). No aborda adecuadamente algunos errores importantes con los que se encontrará en cualquier escenario de lotes moderadamente complejos.

cosas importantes que usted debe profundizar en como un nuevo motor de arranque, y decidir sus requisitos de son,

  • configuración de excepciones (cuando para saltar, cuando a fallar, cuando para volver a intentar)
  • uso del contexto de ejecución para mantener el estado (por ejemplo, cuándo usar el contexto de ejecución del paso frente al contexto de ejecución del trabajo).
  • mantenimiento general de estado (utilice el alcance paso, especialmente para parámetros de entrada)

vale la pena perseverar sin embargo. La programación por lotes es muy diferente a otros estilos del lado del servidor y se beneficia enormemente del enfoque habitual de "abstracción de patrones" de Spring.

1

Acabo de comenzar a buscar en Spring Batch como un posible reemplazo para nuestro marco de trabajo por lotes interno. En realidad, la creación de un servidor por lotes con la capacidad de programar trabajos y una interfaz JMX en la parte superior para proporcionar una visión general de la ejecución/instancias de trabajos ejecutados anteriormente tomó poco más de un día. Sin embargo, al igual que Caoilte, encuentro problemas con la documentación.El principal, y el que no está en la documentación o en los javadocs, es qué tablas necesita el JobRepository. El valor predeterminado es tener un JobRepository de persistencia de base de datos, que es uno de los requisitos de mi nuevo servidor, pero no puedo encontrar ninguna mención de las tablas requeridas. Tuve que buscar en Google alto y bajo para mencionarlos (si están en la documentación, con mucho gusto pondré sal en mi humilde pastel).

Creo que realmente crear un lote para ejecutar en Spring Batch es una tarea bastante compleja, dada la amplia gama de opciones de configuración disponibles para usted. Esta es una fortaleza en mis ojos. Proporciona oportunidades para configurar tareas por lotes complejas en xml, que todavía tengo que encontrar en cualquier otro marco por lotes (que yo sepa). Pero si realmente no desea aprovechar el poder de Spring Batch, ¿por qué no simplemente crea un trabajo con un solo paso de tasklet (pero luego debe preguntarse si vale la pena la sobrecarga).

+1

Abandoné el marco debido a la documentación limitada y, para ser sincero, es mucho más de lo que necesitábamos. Buena suerte. –

+0

Viéndolo de nuevo mientras se preparan para lanzar 2.0. –

1

Lástima que ustedes lo abandonaron, el marco es realmente genial. Pero si alguien más necesita un intento de inicio rápido: Spring Batch Quick Start

/Anatoly

5

Hace poco di Spring Batch un verdadero intento. Diré que en mi implementación, utilicé un repositorio en memoria (porque los reinicios y los reintentos no eran una prioridad en las circunstancias de mi proyecto), pero puedo apreciar lo que dice Richard sobre el JobRepository: básicamente tienes que cavar en profundidad para encontrar el esquema de la base de datos.

Para Spring Batch 2.1, proporcionan cierta documentación en el repositorio: http://static.springsource.org/spring-batch/reference/html/metaDataSchema.html, incluidas las discusiones sobre cómo tratar las implementaciones específicas de la base de datos. El DDL para crear las tablas se encuentran en el núcleo de archivos por lotes primavera JAR:

primavera-batch-core-2.1.0.RELEASE.jar:./Org/Spring Framework/lote/core/* SQL

Los scripts están presentes para DB2, Derby, H2, HSQLDB, MySQL, Oracle 10g, PostgreSQL, MS SQL y Sybase.

+0

Otra observación sobre Spring Batch: puedo apreciar los sentimientos de las personas con respecto a la API: a primera vista parece ser muy torpe. Pero proporciona suficiente bondad cuando se trata de procesar archivos ASCII planos (y se sorprendería de cuánto el procesamiento de datos heredado aún utiliza archivos planos de ancho fijo - diablos, solo la cantidad de COBOL que todavía se usa a veces me daña la cabeza) Decidí probarlo. Mi último pensamiento es que la noción de los contextos de ejecución de Job y Step es lo que me hizo tropezar una y otra vez en el desarrollo. – WineSoaked

+0

Puede editar ese comentario en su pregunta. Pero lo que dices tiene sentido. También tengo que lidiar con los archivos ASCII producidos por COBOL, así que quizás vuelva a echarle un vistazo. Todavía tengo la vaga sensación de que es excesivo. –

+0

Sí, esta fue mi primera respuesta (y comentario) sobre SO, por lo que la mecánica de la edición no me resultó clara (como lo son ahora). – WineSoaked

4

En este tutorial, crearemos una aplicación Spring Batch simple para demostrar cómo procesar una serie de trabajos donde el objetivo principal es importar una lista de registros delimitados por comas y de longitud fija. Además, agregaremos una interfaz web utilizando Spring MVC para enseñar cómo activar trabajos manualmente, y para que podamos inspeccionar visualmente los registros importados. En la capa de datos, utilizaremos JPA, Hibernate y MySQL.

  1. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-1.html
  2. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-2.html
  3. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-3.html
  4. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-4.html
+0

Este tutorial cubre Spring Batch 2! Por lo tanto, puede usar este en lugar de los desactualizados Tutoriales de Spring Batch 1. –