Quartz或任何其他Java API的动态作业调度

时间:2018-08-30 14:25:24

标签: java spring spring-batch quartz-scheduler

我有一个UI界面,用户可以在其中定义作业名称,间隔,活动/不活动等。

我们如何使用Quartz Scheduler或任何Java / Spring api实现这一目标?

例如假设任何Quartz作业已启动且间隔设置为10分钟,因此理想情况下,作业将在下一个10分钟间隔内运行。但是,每次作业运行时,我们都希望从数据库中获取最新的时间间隔并进行调度。

10:00作业运行,并且数据库间隔设置为10分钟 10:10作业运行,并且数据库间隔设置为20分钟

因此下一次工作应在10:30进行

1 个答案:

答案 0 :(得分:1)

如果使用Quartz,则可以实现自定义Trigger。您的实现将在数据库中查找值,并在下次运行getFireTimeAfter时返回。

另一种选择是使用Spring Scheduling API并实现Trigger接口。同样,nextExecutionTime方法将决定下次运行的时间。

使用自定义实现的优点是您可以完全控制触发逻辑(例如,在您的情况下,在数据库中进行查找并动态设置下一次运行时间)。