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

Java 使用Quartz和Hibernate的实时作业调度web应用程序,java,hibernate,quartz-scheduler,Java,Hibernate,Quartz Scheduler,我是一个初学者。我的要求是这样的。我已经创建了java web应用程序。数据库中有一些任务存储。为了与DB通信,我使用hibernate查询语言。DB表中有大量要运行的作业存储 作业表 作业名称运行日期状态 1.1创建用户| 2015/5/13下午1:30 |时间表 2.2015年5月13日上午10点时间表 我想为作业实现一个作业侦听器,并在确切日期到来时执行作业。我已经阅读了internet上的一些文章,但我不太清楚。我想知道如何不时运行作业侦听器,检查作业是否准备好执行,如果准备好,将使用H

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

作业表

作业名称运行日期状态

1.1创建用户| 2015/5/13下午1:30 |时间表

2.2015年5月13日上午10点时间表


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

您无需不时检查作业是否准备就绪,是否需要执行。这就是石英进入画面的地方

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

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

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

一旦知道作业需要在特定时间运行,就可以使用Quartz scheduler计划作业。Quartz scheduler将负责在计划时间执行作业


注意:-Quartz依赖项中的触发器和作业bean类因版本而异。适当地进行更改

我终于找到了一篇好文章,让我们知道如何在动态中使用quartz进行curd操作。上面发布的答案也不错,但问题是所有作业的创建和执行都是静态的。但我的要求是作业应以动态方式创建。这将帮助您获得一些关于如何在运行时创建执行删除作业的想法。所有学分归文章作者:)。我之所以分享这篇文章,是因为很多人都在寻找这类东西,但这篇文章不太受欢迎。以下是我遵循的步骤

  • 为存储作业详细信息创建数据库

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

  • 从数据库获取存储的作业,并将每个作业分配给quartz作业调度器

  • 配置Spring框架以连续执行
    PersistentJobSchedulerJob

    希望这对某人有帮助


  • 它解释了如何在java应用程序中使用quartz和spring。好的和优雅的解释是的,但问题是用户也可以装箱作业任务。它是动态的。那么我如何观察这些作业并在日期到来时执行。plz,如果它对你有效,你能接受答案吗?