Pregunta

Estoy a punto de crear una pequeña aplicación que sea responsable de enviar varios informes a varios usuarios en varios Intevals. Podríamos estar hablando de 50 o 100 informes diferentes que van a diferentes personas. Algunos informes deben generarse todos los días, algunos cada semana y otros cada mes.

He estado usando la biblioteca de cuarzo antes para ejecutar tareas a intervalos regulares. Sin embargo, para mantener las cosas simples, me gusta la idea de tener un solo hilo de cuarzo cuidando todos los informes. Es decir, el hilo debe recorrer todos los informes, digamos cada 15 minutos y determinar, ya sea es hora de que se genere y envíe uno o más. No importa si se genera un informe a las 12:00 o 12:15.

Estoy pensando en si sería posible, de alguna manera, para cada informe configurar tiempos específicos como "Mon@12: 00, mié@12: 00" o "viernes@09: 30". Luego, según eso, el hilo determinaría si era hora de enviar un informe o no.

Mi pregunta es; ¿Alguien más ha hecho algo como esto y existen bibliotecas que pueda facilitar la implementación de esta tarea?

¿Fue útil?

Solución

¿Por qué no simplemente registrar una instancia de tarea de cuarzo separada para cada informe y dejar que el cuarzo maneje toda la programación para usted? Ese es después de todo el punto detrás de él.

Otros consejos

Puede crear solo un solo hilo y ping a una "estructura de datos de programación de trabajo" en algún intervalo de tiempo para ver si necesita ejecutar un informe. En caso afirmativo, ejecutaría el informe, de lo contrario, iría a una siesta corta y ping nuevamente después de un tiempo de sueño especificado.

Causará un problema si un trabajo tarda demasiado en completarse y comienza a acumular trabajos.

La estructura de datos del horario de trabajo mantendría su registro ordenado por la marca de tiempo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top