标签: java spring spring-batch quartz-scheduler
我有一个UI界面,用户可以在其中定义作业名称,间隔,活动/不活动等。
我们如何使用Quartz Scheduler或任何Java / Spring api实现这一目标?
例如假设任何Quartz作业已启动且间隔设置为10分钟,因此理想情况下,作业将在下一个10分钟间隔内运行。但是,每次作业运行时,我们都希望从数据库中获取最新的时间间隔并进行调度。
10:00作业运行,并且数据库间隔设置为10分钟 10:10作业运行,并且数据库间隔设置为20分钟
因此下一次工作应在10:30进行
答案 0 :(得分:1)
如果使用Quartz,则可以实现自定义Trigger。您的实现将在数据库中查找值,并在下次运行getFireTimeAfter时返回。
getFireTimeAfter
另一种选择是使用Spring Scheduling API并实现Trigger接口。同样,nextExecutionTime方法将决定下次运行的时间。
nextExecutionTime
使用自定义实现的优点是您可以完全控制触发逻辑(例如,在您的情况下,在数据库中进行查找并动态设置下一次运行时间)。