Sto lavorando su un'applicazione web Java / Spring. L'applicazione rilascia licenze su richiesta. Ogni licenza ha una data di scadenza. Le licenze possono essere rinnovate dall'amministratore. Voglio inviare una notifica via email o eseguire alcune operazioni 90, 45, 30, x, y, z no. giorni prima della scadenza della licenza. La notifica e-mail da inviare esattamente prima del numero di giorni (non richiesto per essere precisi ai minuti) è un obbligo contrattuale e deve essere inviato fino a quando la licenza non viene rinnovata.
Sto pensando di seguire i modi per implementarlo.
- Implementa uno Spring Scheduler che viene eseguito una volta al giorno e controlla la scadenza delle licenze dopo il giorno corrente +
x
giorni e invia una notifica via email. Tuttavia, sono preoccupato che il lavoro non funzioni in un giorno specifico come la manutenzione delle applicazioni, ecc. Ad esempio, l'e-mail del 45 ° giorno può essere persa poiché il lavoro non è stato eseguito il 45 ° giorno. Sembra un errore incline. Per evitare ciò, impostare le colonne 90, 45, 30, x, y, z in un'altra tabella rispetto a ciascuna licenza, ma per il secondo rinnovo, questo sarà un problema. Per evitare ciò, tieni traccia dei giorni in cui viene eseguito lo scheduler, quindi se lo scheduler non viene eseguito in qualsiasi giorno o non viene completato correttamente, rieseguilo manualmente.
Questa è un'app Web stateless che esegue più istanze. Devo implementare questo tipo di operazioni come un lavoro batch separato o all'interno dell'applicazione web come schedulatore?
Apprezzerà qualsiasi idea o suggerimento sulle risorse.