6

Busco a una API WorkQueue ofreciendo las siguientes características:¿Hay una API sofisticada de Java WorkQueue?

  • java.util.Queue compatibles
  • ofertas (opcional) Set-semántica
  • simple y procesamiento por lotes
  • concurrencia (por supuesto)
  • programación
  • políticas de procesamiento diferentes
    • esperar hasta la próxima ejecución programada
    • pre-proceso, si el tamaño del lote se reunió
    • procesamiento retardado (tiempo mínimo en la cola, antes de ser procesado)
  • persistencia (opcional)

Hay hay muchas implementaciones interesantes en el jdk, por ejemplo java.util.DelayQueue que podría usar. Solo quería asegurarme de no reinventar la rueda.

Respuesta

2

¿Sigues buscando una respuesta para aceptar?

Creo que sus necesidades se cumplirían mejor usando el marco ejecutor java.util.concurrent. Ver la API (here's a good start). Hay una comunidad de soporte excelente, puede encontrarla en el concurrency-interest web site. Si te gustan los árboles muertos, Java Concurrency in Practice (JCiP) proporciona un excelente recurso.

El marco ejecutor le permite crear tareas (en forma de Runnables o Callables), proporciona varios esquemas para sincronizar o ordenar tareas entre sí.

Finalmente, la infraestructura emergente de ForkJoin (FJ) es bastante utilizable y puede satisfacer sus necesidades. API es here, good paper is here y introductory article here.

Espero que esto ayude.

JA

3

Tenga una mirada en Quartz Job Scheduler API

cuarzo Características: http://www.quartz-scheduler.org/overview/features.html

No estoy seguro acerca de su compatibilidad java.util.Queue. Pero proporciona la mayoría de las funciones relacionadas con la programación y ejecución de trabajos.

+1

Quartz es para programar tareas retrasadas, eso no es lo que estaba buscando.En cuanto a la programación y el retraso que necesito, definitivamente me quedaré con 'ScheduledExecutor' de Java, que proporciona una API mucho mejor que la del cuarzo. – whiskeysierra

0

Aunque no tiene ninguna funcionalidad de programación, el JDK tiene java.util.concurrent.SynchronousQueue que puede ser útil.

1

corto y recto respuesta - no. Tienes que lanzar el tuyo o solo vas a servir como un probador gratuito para los experimentos de otra persona. Así que al menos pasarás un tiempo haciendo un sistema exactamente para tus necesidades, conociendo todas las partes centrales y teniendo el control total en lugar de tener una dependencia grande y desconocida.

Cuestiones relacionadas