使用Quartz和Hibernate的实时作业调度web应用程序



我是Quartz的初学者。我的要求是这样的。我已经创建了java web应用程序。以下是数据库中存储的一些任务。为了与DB通信,我使用hibernate查询语言。DB表中有大量的作业存储要运行。

作业表

作业名称 运行日期状态[/strong>

1.createUsers | 2015/5/13下午1点30分|安排

2.更新用户|2015/5/13上午10点|安排

我想为作业实现一个作业监听器,并在确切日期到来时执行作业。我已经浏览了互联网上的一些文章,但我不太清楚。我想知道,我如何不时运行一个作业侦听器,检查作业是否准备好执行,如果准备好了,将使用HQL获取数据并运行作业。感谢你的想法。

您不需要不时检查作业是否准备好并需要执行。这就是Quartz的用武之地。

情况1:当知道何时执行作业时
在这种情况下,您可以使用Mkyong教程中提到的cron触发器

情况2:当作业执行时间是动态的,即在时间上未知时
在这种情况下,您需要在java类中自动连接调度器(或从spring应用程序上下文获取)。您可以通过调用带有自定义作业的调度器上的scheduleJob()方法来动态调度作业。Mkyong教程。

对于每个计划的作业,都会有一个具有触发器键的触发器,您可以在Quartz调度器实例上使用unscheduleJob(triggerKey)来取消计划。

一旦您知道某个作业需要在特定时间运行,就可以使用Quartz调度器调度该作业。Quartz调度程序将负责在计划的时间执行作业。

注意:Quartz依赖项中的Trigger和Jobbean类因版本而异。进行适当的更改

我终于找到了一篇很好的文章,让我们知道如何在中动态使用quartz来执行凝乳操作。上面发布的答案也很好,但问题是所有的工作都是以静态的方式创建和执行的。但我的要求是工作应该以动态的方式创建。本文将帮助您了解如何在运行时创建执行删除作业。所有的功劳都归于文章作者:)。我分享这篇文章是因为很多人都在寻找这种东西,但这篇文章并不受欢迎。以下是我遵循的步骤。

  1. 创建一个数据库以存储作业详细信息。

    原因是每次我们重新启动服务器时,我们的作业都不会被丢弃。

  2. 从数据库中获取存储的作业,并将每个作业分配给石英作业调度程序。

  3. 将Spring框架配置为连续执行PersistentJobSchedulerJob类。

    希望这对某人有所帮助。

最新更新