用于Java中高级作业调度的框架是什么?

时间:2011-12-08 17:05:38

标签: java scheduling quartz-scheduler spring-batch-admin

在我的应用程序中,我需要定期运行后台任务(我可以轻松地使用Quartz - 即安排给定的作业定期在特定时间运行)。

但我希望能有更多的控制权。特别是我需要:

  1. 让系统重新运行一个在预定时间内没有运行的任务(即服务器已经关闭,因此任务没有运行。在这种情况下,我希望'迟到&#39 ;任务尽快运行)
  2. 很容易控制任务 - 即按需运行任务或查看上次运行给定任务的时间或重新安排在不同时间运行给定任务
  3. 在我看来,使用Spring Batch Admin可以实现以上几点,但我还没有在这方面有太多经验。另外,我已经看过很多关于Spring Batch不是一个调度工具的帖子,所以我很怀疑这个工作的正确工具是什么。

    所以我的问题是:可以通过Spring Batch Admin实现上述目标吗?或者Quartz足够但需要配置才能完成上述操作?或许我需要两者兼而有之?或其他什么?

    非常感谢:) 彼得

1 个答案:

答案 0 :(得分:4)

  

让系统重新运行未在预定时间运行的任务

Quartz中的此功能称为Misfire Instructions,完全符合您的要求 - 但更灵活。您所需要的只是定义JDBCJobStore

  

轻松控制任务会很好 - 即按需运行任务或查看上次运行给定任务的时间或重新安排某个特定任务在不同时间运行

您可以使用Quartz JMX访问各种信息(如上一次和下次运行时)或直接查询Quartz数据库表。在上述输入中还有免费和商业管理工具。我相信你也可以手动在那里开展工作。

Spring Batch可以与Quartz 集成,但不能替换它。