【问题标题】:Real time Job Scheduling web application using Quartz with Hibernate使用 Quartz 和 Hibernate 的实时作业调度 Web 应用程序
【发布时间】:2015-12-05 15:25:14
【问题描述】:

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

工作表

jobName runDate status

1.createUsers | 2015/5/13 1.30pm |时间表

2.更新用户 | 2015/5/13 10am |时间表

我想为工作实现一个工作监听器并在确切日期到来时执行工作。我浏览了一些互联网上可用的文章,但对我来说不是很清楚。我想知道如何运行工作监听器时间定时检查作业是否准备好执行,如果准备好,将使用 HQL 获取数据并运行作业。欣赏您的想法。

【问题讨论】:

  • 访问mkyong.com/spring/spring-quartz-scheduler-example ....它解释了如何在java应用程序中使用石英和弹簧。漂亮优雅的解释
  • 是的,但问题是用户也可以创建作业任务。它是动态的。所以我如何观看这些作业并在日期到来时执行。

标签: java hibernate quartz-scheduler


【解决方案1】:

您无需不时检查作业是否已准备好并需要执行。这就是 Quartz 发挥作用的地方。

案例 1:当知道何时执行作业时
在这种情况下,您可以使用 Mkyong tutorial

中提到的 cron 触发器

案例 2:当作业执行时间是动态的,即不知道更早的时间时。
在这种情况下,您需要在您的 java 类中自动装配调度程序(或从 Spring 应用程序上下文中获取)。您可以通过使用自定义作业在调度程序上调用 scheduleJob() 方法来动态调度作业。 Mkyong tutorial.

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

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

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

【讨论】:

  • plz,如果对你有用,你能接受答案吗?
【解决方案2】:

我终于找到了一篇好文章,让我们知道如何动态使用石英进行凝乳操作。上面发布的答案也很好,但问题是所有作业的创建和执行都是静态的。但我的要求是应该以动态方式创建作业。这个article 将帮助您了解我们如何在运行时创建执行删除作业。所有学分都归文章作者:)。我分享这个是因为很多人在看对于那种事情,但这篇文章不太受欢迎。这是我遵循的步骤。

  1. 创建用于存储作业详细信息的数据库。

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

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

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

    希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 2015-05-11
    相关资源
    最近更新 更多