Tomcat集群Spring+Quartz多次執行解決方案記錄


由於在集群環境下定時器會出現並發和重復執行的問題,我再三考慮記錄有5

 

一、把定時器模塊單獨拿出來放到一台tomcat或者新建一個Java工程手動啟動定時器,這樣定時器的任務就可以從原來的集群中抽離開來,原來的tomcat集群不再執行定時器任務,而是交給定時器應用單獨執行。

 

二、不從集群當中抽離定時器,而是采用另外一個應用統一調度,每次只有一台tomcat執行定時器任務。

 

三、 采用數據庫來記錄每台tomcat定時器執行的狀態,執行的狀態可以采用當前執行的時間點來區分,當定時器執行的時候首先應該把當前時間點記錄到數據庫中 防止另外一台機器重復執行,當另外一台tomcat上面的定時器執行的時候首先會比較當前時間點是否和數據庫記錄的時間點之間的時間差大於定時器執行的時 間間隔,執行的狀態還可以采用其他方式進行區分

 

四、采用EJB充當業務層,采用分布式開發,定時器放到EJB上面執行。http://www.theserverside.com/news/1377023/Using-the-Quartz-Enterprise-Scheduler-in-J2EE

 

五、tomcat+jboos,定時器部署到tomcat上面,定時器要執行的業務邏輯放在jboss上面采用會話bean+實體bean,這種可以用在jboss集群環境下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM