Il mio programma ha un componente - soprannominato lo Scheduler - che consente ad altri componenti di registrare punti nel tempo in cui vogliono essere richiamati. Questo dovrebbe funzionare molto come il servizio cron di Unix, i. e. dite allo Scheduler di "notificarmi alle dieci minuti dopo ogni ora piena".Classe libreria Java per gestire l'esecuzione pianificata di "callback"?
Mi rendo conto che non ci sono veri callback in Java.
Ecco il mio approccio, c'è una libreria che già fa queste cose? Sentiti libero di suggerire anche miglioramenti.
Registrati chiamata alla pianificazione passa:
- una specifica tempo contenente ore, minuti, secondi, mese anno, dom, Dow, in cui ogni elemento può essere specificato, che significa "eseguirlo ogni ora/minuto ecc " (proprio come crontabs)
- un oggetto contenente dati che dirà all'oggetto chiamante cosa fare quando viene notificato dallo Scheduler. Lo Scheduler non elabora questi dati, lo memorizza e lo restituisce alla notifica.
- un riferimento all'oggetto chiamante
All'avvio, o dopo una nuova richiesta di registrazione, l'utilità di pianificazione inizia con un oggetto calendario del tempo di sistema attuale e controlla se ci sono voci nel database che corrispondono a questa punto nel tempo. Se ci sono, vengono eseguiti e il processo ricomincia. In caso contrario, l'ora nell'oggetto Calendar viene incrementata di un secondo e gli entreis vengono ricontrollati. Questo si ripete finché non c'è una voce o più che corrispondono (es). (Simulazione di eventi discreti)
L'Utilità di pianificazione ricorderà quindi la data/ora, si addormenterà e si riattiverà ogni secondo per verificare se è già presente. Se capita di svegliarsi e il tempo è già passato, ricomincia, allo stesso modo se è giunto il momento e i lavori sono stati eseguiti.
Edit: Grazie per avermi al quarzo. Sto cercando qualcosa di molto più piccolo, tuttavia.
Sì, ma avevo bisogno di qualcosa di veramente semplice, senza dipendenze aggiuntive. Comunque, ho mantenuto la persistenza nella mia app, lo scheduler non ne ha bisogno da solo. Ho quarzo sulla mia lista però, dovrei aver bisogno di più potenza in seguito. –
Nella versione più recente, ora è possibile raggruppare i lavori Quartz con Terracotta in aggiunta a un database. –
È buffo che le caratteristiche di persistenza del Quarzo siano pubblicizzate come un grande vantaggio: in molti casi/molti casi sono solo una grande PITA. – StaxMan