2012-06-25 13 views
6

Non ho molta familiarità con Java Quartz, abbiamo appena utilizzato un lavoro di test che è pianificato quotidianamente. Per la nostra applicazione web Struts2, vogliamo eseguire alcuni lavori giornalieri programmati in momenti diversi della giornata. I lavori devono essere in stato di persistenza in modo tale che, anche se i lavori non riescono a causa del fallimento del server/dell'applicazione, devono essere rieseguiti successivamente quando il server è attivo. Inoltre posso memorizzare lo stato/i risultati dei lavori in DB, in modo da monitorare i lavori. Qualsiasi suggerimento sarebbe utile.JavaQuartz Persistenza del lavoro

- Grazie

+0

Credo, il quarzo ha tutte queste caratteristiche. Può certamente usare un job store persistente. – Thilo

risposta

6

Qualunque cosa tu hai citato è possibile in quarzo di pianificazione e c'è già una caratteristica con i trigger che noi generalmente chiamiamo Misfire Instructions questo è ciò doc dire in proposito

Un'altra proprietà importante di un trigger è la sua "istruzioni cilecca ". Si verifica una mancata accensione se un trigger persistente "perde" il tempo di attivazione a causa dello spegnimento dello scheduler o perché non ci sono thread disponibili nel pool di thread di Quartz per l'esecuzione del lavoro. I diversi tipi di trigger hanno a disposizione diverse istruzioni di mancata accensione. Di default usano un'istruzione 'smart policy' - che ha un comportamento dinamico basato sul tipo di trigger e sulla configurazione. All'avvio dello scheduler, esso cerca eventuali trigger persistenti che hanno generato risultati errati e quindi li aggiorna in base alle istruzioni di mancata accensione configurate individualmente. Quando inizi a utilizzare Quartz nei tuoi progetti, dovresti familiarizzare con le istruzioni di mancata accensione definite sui tipi di trigger specificati e spiegate nel loro JavaDoc. Informazioni più specifiche sulle istruzioni di mancata accensione verranno fornite all'interno delle lezioni di esercitazione specifiche per ciascun tipo di trigger.

Per quanto riguarda la persistenza di lavoro al quarzo è dotato di poche costruire in meccanismo e tutto ciò che serve per impostare JobStore come JDBCJobStore

vi suggerisco di andare con Quartz scheduler document la sua abbastanza facile e hanno un sacco di tutorial e esempi per iniziare.

Se non si utilizza Spring nella propria applicazione, non è necessario aggiungere ulteriore livello di astrazione e dipendenze.

+0

Dopo aver consultato i documenti, ho trovato che jobStore è responsabile di tenere traccia di tutti i "dati di lavoro" che si danno all'utilità di pianificazione: processi, trigger, calendari, ecc. È anche possibile memorizzare lo stato di lavoro in jobStore, cioè , il risultato/stato di esecuzione .. –

+0

si sarà in grado di ottenere le informazioni anche –

+0

Qualsiasi lezione particolare no. nella documentazione in cui posso trovare i dettagli sul recupero dello stato dei lavori di un processo di pianificazione. –

1

Abbiamo Job stores api in Java quarzo. Ciò manterrà i dati nei database relativi alle informazioni del lavoro. Quindi immagino che questo ti aiuterà. È possibile controllare this link per avere un'idea del codice e della struttura del DB.

2

È possibile utilizzare il quarzo combinato con Sprig batch.

Il primo fornisce API per la gestione di vari flussi (complessi come necessario), archiviazione permanente dello stato del lavoro e API per il monitoraggio e la ripetizione di processi in base al loro stato di esecuzione. Un'altra utile libreria è Spring Batch admin. Ha una console web e una guida di 5 minuti.

Il quarzo viene utilizzato come scheduler. La persistenza dello stato del processo viene gestita dal batch di primavera. Può essere eseguita come applicazione java autonoma e anche in contenitore Web/applicazione (per me Tomcat era sufficiente).

Buona fortuna!

+0

Per utilizzare l'amministratore di Spring Batch, è necessario utilizzare il framework Springs nella mia app Web Struts2 esistente –

+0

sì, ne avrete bisogno. – aviad

+0

Ok, grazie per i tuoi suggerimenti. –