java批处理程序的crontab的好替代品?

Ric*_*res 5 java osgi scheduler crontab quartz-scheduler

我一直在寻找我公司当前批处理系统(java SE + crontab)的替代品,因为有很多java代码/ shell脚本重复,大多数工作都是ETL并且做了非常相似的步骤而且我想提供平台独立而不是依赖于crontab,更具体的是我们的工作角色,当前的创造就业步骤是这样的:

  1. 开发满足业务需求的java程序.
  2. 在类似环境的生产中进行测试,直到满足业务需求.
  3. 将其传递给生产服务器,其中包含shell脚本,提供文件维护,java prgram执行和错误处理例程(避免运行同名的2个进程,支持邮件日志和程序错误时的开发人员,检查输出文件是否存在于java之后)如果程序与接口相关,程序结束),并指定重复数据(该程序运行的频率).

大部分相同的逻辑被设计和开发成一个系统,其中包含通用例程,这些程序或"接口"(即他们在那里称之为)是独立完成的(通常使用复制粘贴代码,因为大多数例程都相似),但我我仍然缺少一个非常重要的部分,我需要帮助,这涉及我使用的调度程序实现,我需要它来满足这两个需求之一:

- 我想保证每当我停止调度服务器进行系统更新(由于添加了新的工作等)或其他原因时,那些由于系统停机而无法运行的作业(例如3个工作可以由于系统已关闭,因此无法在下午3:00运行,即使各自的调度时间已经消失,也可以在服务器恢复运行时运行.

或者,如果第一件事不可能,那么:

- 我需要一种方法来使用新作业更新调度程序,并且还需要更新提供这些作业的jar,而无需重新启动调度程序(类似于OSGi).

这些条件中的任何一个都满足我的要求,并且会结束我对替换的搜索,我查看了Quartz,Oddjob(这是一个使用这个调度程序生产的调度程序,但是每次添加新的作业/库时都需要重新启动,不满足我的需求)和OSGi使用应用服务器,但我正在寻找更好的建议,如果你也知道更好的选择,他们也非常感激.