2011-09-24 25 views
7

La premisa es la siguiente: Para el procesamiento de tareas asíncronas tengo un marco casero que:Trabajo cola biblioteca/software para Java

empleos
  • tiendas en la base de datos
  • Tiene un simple API de Java para crear más puestos de trabajo y los procesadores para ellos
  • el procesamiento puede ser embebido en una aplicación web o puede funcionar por sí mismo en en diferentes máquinas para escalar a cabo
  • IU
  • web para el seguimiento de la cola y la cancelación de elementos de cola

Me gustaría reemplazar esto con una biblioteca ya hecha porque esperaría más robustez de aquellos y no quiero mantener esto. He estado investigando el problema y pensé que podrías usar JMS para algo similar. Pero aún tendría que crear una API java simple, descubrir un tiempo de ejecución donde pondría el procesamiento cuando quiero escalar y construir una interfaz de usuario de monitoreo. Siento que lo único que me beneficiaría de JMS es que no tendría que hacer las cosas de la base de datos.

¿Hay algo similar a esto que esté listo?

ACTUALIZACIÓN

Básicamente esta es la configuración que me gustaría hacer:

  • ejecuta la aplicación Web en un contenedor de servlets o Application Server
  • aplicación Web utiliza una API de cliente para crear empleos
  • X cantidad de máquinas que procesan esos trabajos
  • Controle y administre trabajos desde una IU

Respuesta

5

Puede utilizar cuarzo:

http://www.quartz-scheduler.org/

+0

Parece que se puede agrupar utilizando una base de datos para almacenar los trabajos. Lo que no entiendo es cómo construiría esas instancias de clúster. ¿Todavía tengo que codificar mi propio servidor para mantener funcionando el Quartz? – palto

+0

@palto Consulte aquí http://www.quartz-scheduler.org/overview/features. Puede incrustar cuarzo en su aplicación JSE o JEE o crear instancias de cuarzo en el servidor de aplicaciones (o en el contenedor de servlets). – Andrey

+0

¿Pero y si quiero escalar? Puedo ejecutar Quartz en la misma máquina que ejecuta mi aplicación web (contenedor de servlets). Pero si quiero mover el procesamiento de trabajos de la aplicación web y crear una instancia x cantidad de máquinas para procesar los trabajos, ¿cómo lo haría?¿Tendría que escribir mi propio servidor? – palto

0

Echa un vistazo a Spring Batch.

Enlace al sitio web de Sprint por lotes: http://projects.spring.io/spring-batch/

+0

¿Cómo lotes de primavera de instalación para ejecutar en una configuración en la aplicación web crea puestos de trabajo y otras máquinas de procesar esos puestos de trabajo ? Eché un vistazo rápido a la documentación y Spring Batch parece que es para procesar trabajos como un ESB, pero ¿cómo lo usaría para escalar? – palto

+0

No creo que Spring Batch tenga algo que ver con ESB. ¿Qué significa "escalar"? Suena como un requisito sin sentido para mí, como ridiculizar una solución porque "no es liviano". ¿Puedes explicar? – duffymo

+0

Por escalamiento quiero decir cómo agregaría máquinas adicionales para procesar los trabajos. – palto

Cuestiones relacionadas