2013-10-29 19 views
7

我們有一個Spring + JPA Web應用程序。 我們使用兩個運行這兩個應用程序並使用相同數據庫的tomcat服務器。具有多個服務器的預定任務 - 單一責任人

我們的一個應用程序需求是預製cron \ scheduled任務。

短暫研究後,我們發現,Spring框架提供了一個非常簡單的解決方案,以cron作業, (譯註基礎的解決方案)

然而,由於運行相同的web應用程序都雄貓 - 如果我們將利用這個春天的解決方案,我們將(各在不同的Tomcat)創建,其中2個crons在同一時間運行非常有問題的情況下

有什麼辦法來解決這個問題?也許這種選擇對我們的目的不好?

謝謝!

+0

閱讀這篇文章:https://github.com/SpringOnePlatform2016/dsyer-locks-and-leaders – MariuszS

回答

5

作爲一般規則,您將要保存設置以指示作業正在運行。與「Spring Batch」如何操作相似,您可能想要在數據庫中創建一個表,僅用於存儲作業執行。你可以選擇實現,但是最終你的計劃任務應該檢查數據庫,看看是否有相同的任務正在運行,如果沒有,請繼續執行任務。任務完成後,請適當更新數據庫,以便將來的執行能夠繼續。

-1

@kungfuters解決方案無疑是一個更好的最終目標,但作爲一個簡單的先執行,你可以使用一個屬性來啓用/禁用任務,並且只對其中一臺服務器上運行的任務。