Ho, sul server, molti lavori definiti dagli utenti e alcuni di questi sono programmati usando espressioni cron. Devo controllare (posso eseguire Groovy / Java sul server) se quei lavori impiegano più tempo di quanto sono programmati (intendo che il lavoro richiede 10 minuti, ma è programmato per funzionare ogni 5 minuti).
Ho cercato di trovare qualcosa che converta l'espressione cron in intervalli di tempo. Questo sembra fare un buon lavoro convertendo le espressioni di cron in stringhe leggibili dall'uomo, ma come ottenere l'intervallo di tempo più breve?
La soluzione ricorsivamente si ricollega da anni a secondi e si aggiunge ogni volta trovata per elencare, calcolare ogni intervallo di tempo e trovare il più piccolo da lì? O esiste un modo migliore?
Esempio, diciamo che abbiamo un'espressione cron: 0 0 11,16,19,21 * * *
Questo si traduce in: Ogni anno ogni mese tutti i giorni alle 11:00, 16:00, 19:00 e 21:00. Questo ci dà intervalli: 5h, 3h, 2h e 14h. Mi interessa l'intervallo più breve - 2h.
Capisco che questo può diventare rapidamente molto complesso e portare a intervalli di gazillion, ma stavo guardando casualmente le espressioni che avrei bisogno di calcolare e sono piuttosto facili. In attesa di una risposta, ho scoperto la libreria Quartz . Posso dargli una espressione cron e semplicemente chiedergli "quando è il prossimo, quando è il prossimo ecc.". Quindi se dovessi chiedere ... diciamo 5 volte, probabilmente ho coperto la maggior parte dei miei casi. Devo controllare come si comporta. Se qualcuno ha una soluzione migliore, lo accolgo calorosamente.