Stiamo eseguendo un'applicazione web Spring 3.0.x (.war) con un lavoro notturno @Scheduled in un ambiente WebLogic 10.3.4 in cluster. Tuttavia, poiché l'applicazione viene distribuita su ciascun nodo (utilizzando la procedura guidata di distribuzione nella console Web dell'AdminServer), il lavoro viene avviato su ciascun nodo ogni notte, quindi viene eseguito più volte contemporaneamente.Eseguire l'attività @Scheduled solo su un nodo del cluster WebLogic?
Come possiamo evitare che ciò accada?
So che le librerie come Quartz consentono di coordinare i lavori all'interno di un ambiente cluster mediante una tabella di blocco del database o potrei persino implementare qualcosa di simile. Ma poiché questo sembra essere uno scenario abbastanza comune mi chiedo se Spring non abbia già un'opzione su come aggirare facilmente questo problema senza dover aggiungere nuove librerie al mio progetto o inserire soluzioni alternative.
- Non siamo in grado di eseguire l'aggiornamento a Spring 3.1 con profili di configurazione, as mentioned here
Per favore fatemi sapere se ci sono questioni aperte. Ho anche fatto questa domanda sul Spring Community forums. Grazie mille per il vostro aiuto.
Vuoi ottenere un qualche tipo di failover? Se così i profili di configurazione non saranno davvero utili qui e avrai comunque bisogno di sincronizzazione. Avevamo un requisito simile e abbiamo finito con un lock table che fornisce anche alcuni riepiloghi di esecuzione rapidi. – mrembisz
@mrembisz No, al momento non stiamo cercando il failover, poiché ciò complicherebbe molto le cose. –