2013-10-29 11 views
7

Abbiamo un'applicazione web Spring + JPA. Utilizziamo due server tomcat che eseguono entrambe le applicazioni e utilizzano lo stesso DB.Attività pianificate con più server: singolo punto di responsabilità

Una delle nostre richieste di applicazione è preformare cron \ operazioni pianificate.

Dopo una breve ricerca abbiamo scoperto che Spring Framework offre una soluzione in avanti molto semplice a cron posti di lavoro, (soluzione basata Annotazione)

Tuttavia dal momento che entrambe Tomcats che eseguono lo stesso webapp - se useremo la soluzione di questa primavera siamo creerà uno scenario molto problematico in cui 2 crons sono in esecuzione contemporaneamente (ciascuno su un tomcat diverso)

C'è un modo per risolvere questo problema? forse questa alternativa non è buona per il nostro scopo?

grazie!

+0

Leggi questo articolo: https://github.com/SpringOnePlatform2016/dsyer-locks-and-leaders – MariuszS

risposta

5

Come regola generale, si desidera salvare un'impostazione per indicare che un lavoro è in esecuzione. Simile a come "Spring Batch" fa il trucco, potresti voler creare una tabella nel tuo database semplicemente per archiviare un'esecuzione di un lavoro. Puoi scegliere di implementarlo come preferisci, ma alla fine le tue attività pianificate dovrebbero controllare il database per vedere se un'attività identica è già in esecuzione e, in caso contrario, procedere con l'esecuzione dell'attività. Una volta completata l'attività, aggiornare il database in modo appropriato in modo che l'esecuzione futura possa procedere.

-1

La soluzione di @kungfuters è sicuramente un obiettivo migliore, ma come semplice prima implementazione, è possibile utilizzare una proprietà per abilitare/disabilitare le attività e solo eseguire le attività su uno dei server.

Problemi correlati