何时使用Cron Job与ScheduledExecutorService

时间:2014-09-19 16:34:59

标签: java cron scheduled-tasks

我们的团队目前正在开发一个Java应用程序,该应用程序将具有许多不断运行的处理线程(执行诸如从队列轮询)。

与此应用程序相关的是,必须在某些预定时间段(每天一次,每六个小时等)运行一系列任务。我们团队的一些成员认为最好通过cron将这些任务作为独立进程执行,而其他人则认为将它们包含在通过Java的ScheduledExecutorService安排的当前应用程序中会更好。有关何时使用cron与内部ScheduledExecutorService的最佳做法,还是仅仅是偏好问题?

3 个答案:

答案 0 :(得分:2)

使用ScheduledExecutorService的好处是你正在使用100%的java,因此如果你想升级你的服务器/更改你的机器由于某种原因,那么你不需要重新配置cron作业。此外,ScheduleExceutorService还允许您使用Callable,因此您可以返回一些结果并在java中处理它们。

答案 1 :(得分:1)

使用cron的优点是,您的操作团队可能熟悉它,并且您可以轻松地重新安排或暂停操作,而无需更改和重新部署应用程序。 (调度批处理操作主要是操作团队的任务)

缺点是您需要在应用程序中使用cron作业可以调用的接口(如REST服务),或者cron启动第二个VM,在执行作业期间与应用程序并行运行。

我们目前正在从基于Quartz的内部调度转向cron / REST方法。

答案 2 :(得分:0)

我会在单一责任原则方面投票:如果周期性任务可以作为独立的进程运行,独立于主应用程序,那么它们应该作为单独的进程运行。如果你把它全部扔进一个大麻袋,我的钱说你有一天会后悔那个决定。