我正在寻找一个可以处理Callable
s或Runnable
s 的通用异步Java作业执行框架.它类似于java.util.concurrent.ExecutorService
(并且可能包装ExecutorService
),但它也具有以下特征:
在作业正在服务时应用程序停机的情况下将作业持久保存到数据库的能力,并能够重新启动未完成的作业.(我明白我的工作可能要实施Serializable
哪个好.)
使用UUID使客户端能够获取作业令牌并查询作业状态.(在引擎盖下,此信息也将持久保存到数据库中.)
我已经开始通过构建来开始自己的工作ExecutorService
,但我更喜欢开箱即用的开源解决方案,如果存在的话.
可以在Spring Framework中运行的东西是理想的.
你可能想看看Quartz.
Quartz是一个功能齐全的开源作业调度系统,可以与几乎任何J2EE或J2SE应用程序集成或一起使用 - 从最小的独立应用程序到最大的电子商务系统.Quartz可用于创建简单或复杂的计划,以执行数十,数百甚至数万个作业; 任务被定义为标准Java组件或EJB的作业.Quartz Scheduler包含许多企业级功能,例如JTA事务和集群.