2017-10-17 34 views
0

我的應用程序當前實例化和使用過程中的應用程序啓動時自動載入默認調度:非集羣Quartz Scheduler:在應用程序啓動時實例化和啓動調度程序...對多臺機器來說是安全的嗎?

@Override 
public void contextInitialized(ServletContextEvent arg0) { 
    try { 
     Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); 
     scheduler.start(); 
    } catch (SchedulerException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

這種邏輯雲計算機上運行,​​以及對地方發展的機器,並且quartz.properties目前設爲非羣集模式。該應用程序也使用JDBC Job Store。

我很擔心每臺機器都有一個調度程序實例,請給出關於如何在多臺機器上管理Quartz Scheduler的建議。這個用例是否需要集羣?

我安排了一個測試觸發器,每分鐘運行一次。雖然沒有重複的工作執行,但我注意到有幾次未執行任務,但從未被視爲失火。

+0

你能詳細說明你的用例嗎?從你所描述的內容來看,它不是很清楚。您的用例是否需要多個實例通過形成一個集羣來共享負載,或者您只是尋求持久性支持?你的每個節點是否管理自己的工作負載? – Srinivas

+0

@Sprinivas玩過不同的配置後,我發現了一個適用於該應用的設置。我會在下面的答案中寫更多關於它的內容。 – plsplox

回答

0

我玩弄了配置和設置,並找到了適用於我的應用程序的設置。應用程序服務器從羣集配置中提供Web資源;我的錯誤是在每個應用程序服務器中啓動一個非羣集的調度程序實例。

目前,我不認爲這個應用程序需要多臺機器來處理預定的工作。另外,我還沒有想出如何在我們的雲服務器上同步系統時間,這是Quartz的羣集功能的要求。

我最終專門用於啓動一個調度程序實例的單個非羣集機器。這種配置按預期工作,並且奇怪的錯誤消失了(未確認的失火等)。

相關問題