2014-09-19 74 views
1

我們的團隊目前正在開發,將有連續運行多線程處理(做的事情,如從隊列中輪詢)的Java應用程序。當使用cron作業與ScheduledExecutorService的

與此相關的應用程序有一系列有一些預先確定的時間段(每天一次,每次六個小時,等),以跑任務。我們團隊的一些成員認爲,這將是最好執行這些任務,通過cron獨立的過程,而另一些人認爲,這將是最好只包括他們通過Java的ScheduledExecutorService的計劃目前的應用中。關於何時使用cron與內部的ScheduledExecutorService有什麼最佳做法,還是僅僅是一個偏好問題?

回答

2

使用ScheduledExecutorService的優勢在於您正在使用100%java,因此如果您想升級服務器/出於某種原因更換機器,則無需重新配置cron作業。此外,還ScheduleExceutorService允許你使用Callable因此你可以返回一些結果,並在Java中處理它們。

1

如何使用cron的好處是,你的運營團隊可能是熟悉它,你可以很容易地重新安排或暫停操作,而不改變和重新部署應用程序。 (調度批處理操作大多是一個操作團隊任務)

缺點是您需要在應用程序中可以調用cron作業的接口(如REST服務),或者cron啓動第二個VM,運行在與作業執行期間的應用程序並行。

我們目前從基於石英內部調度移動到cron/REST方法。

0

我會在單一職責原則的側投票:如果週期性任務可以爲單獨的進程,獨立於主應用程序的運行,那麼他們應該運行爲單獨的進程。如果你把它全部扔進一個大袋子裏,我的錢就會說你會後悔一天的決定。