我是Quartz的初学者。我的要求是这样的。我已经创建了java web应用程序。数据库中有一些任务存储。要与数据库通信,我使用hibernate查询语言。要运行的DB表中有大量的作业存储。
工作表
jobName runDate 状态
1.createUsers | 2015/5/13 1.30pm |时间表
2.UpdateUsers | 2015/5/13上午10点|时间表
我希望在确切的日期到来时实现工作的工作监听器和执行工作。我已经浏览了一些互联网上的文章但对我来说不太清楚。我想知道如何运行工作监听时间如果准备就绪可以使用HQL获取数据并运行作业,那么检查作业是否准备就绪。欣赏你的想法。
答案 0 :(得分:1)
您无需及时检查作业是否准备好以及是否需要执行。这就是Quartz的发展方向。
案例1:当知道何时执行作业时 在这种情况下,您可以使用Mkyong tutorial
中提到的cron触发器案例2:当乔布斯执行时间是动态的,即在时间上早些时候不知道 在这种情况下,您需要在java类中自动装配调度程序(或从spring应用程序上下文获取)。您可以通过在自定义作业的调度程序上调用scheduleJob()方法来动态调度作业。 Mkyong tutorial
对于每个预定的作业,都会有一个具有触发键的触发器,您可以通过在Quartz调度程序实例上使用unscheduleJob(triggerKey)来取消调度。
只要您知道某个工作需要在特定时间运行,您就可以使用Quartz调度程序安排该工作。 Quartz调度程序将负责在预定时间执行作业。
注意: - Quartz依赖项中的Trigger和Job bean类因版本而异。适当地进行更改
答案 1 :(得分:0)
我终于找到了一篇很好的文章,让我们知道如何动态地使用石英进行凝乳操作。上面发布的答案也很好,但问题是所有的工作创建和执行都是静态的。但我的要求是应该以动态的方式创建作业。这个article将帮助您了解如何在运行时创建执行删除作业。所有学分都转到文章作者:)。我分享了这个因为很多人们正在寻找那种东西,但文章并不是很受欢迎。我遵循的步骤也是如此。
创建用于存储作业详细信息的数据库。
原因是每次我们重新启动服务器时,我们的工作都不会丢弃。
从DB获取存储的作业,并将每个作业分配给石英作业调度程序。
配置Spring框架工作以连续执行PersistentJobSchedulerJob
类。
希望这会对某人有所帮助。