Domanda

Sto per creare una piccola applicazione che sarà responsabile per l'invio di vari rapporti a vari utenti su vari interali. Potremmo parlare di 50 o 100 rapporti diversi che vanno a persone diverse. Alcuni rapporti devono essere generati ogni giorno, altri ogni settimana e altri ogni mese.

Ho usato la libreria di quarzo prima per eseguire attività a intervalli regolari. Tuttavia, al fine di mantenere le cose semplici, mi piace il pensiero di avere un thread di quarzo singolo che si prende cura di tutti i rapporti. Cioè, il thread dovrebbe passare a tutti i rapporti, diciamo ogni 15 minuti e determinare se è tempo che uno o più vengano generati e inviati. Non importa se un rapporto viene generato alle 12:00 o alle 12:15.

Sto pensando a se sarebbe possibile, in qualche modo, per ogni rapporto impostare tempi specifici come "mon@12: 00, mer@12: 00" o "ven@09: 30". Quindi, in base a questo, il thread determinerebbe se fosse il momento di inviare un rapporto o meno.

La mia domanda è; Qualcun altro ha fatto qualcosa del genere e esistono librerie che possono semplificare l'implementazione di questo compito?

È stato utile?

Soluzione

Perché non semplicemente registrare un'istanza di attività al quarzo separata per ciascun rapporto e lasciare che Quartz gestisca tutta la pianificazione per te? Questo dopo tutto il punto dietro di esso.

Altri suggerimenti

È possibile creare solo un singolo thread e eseguire una "struttura dei dati del programma di lavoro" ad un intervallo di tempo per vedere se è necessario eseguire un rapporto. Se sì, eseguirebbe il rapporto, altrimenti, andrebbe di nuovo per un breve pisolino e un ping dopo il tempo di sonno specificato.

Causerà problemi se un lavoro richiede troppo tempo per essere completato e inizi ad accumulare lavori.

La struttura dei dati del programma di lavoro manterrebbe il record ordinato per tempo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top