当前位置: 首页 > 知识库问答 >
问题:

使用Quartz或任何其他java api进行动态作业调度

充昌勋
2023-03-14

我们如何用Quartz调度器或任何Java/Spring api来实现这一点?

例如,假设任何石英作业启动,并且间隔设置为10分钟,因此在理想情况下,作业将在下一个10分钟间隔内运行。但每次作业运行时,我们都希望从数据库中获取最新的时间间隔并对其进行调度。

10:00作业运行且在数据库中的时间间隔设置为10分钟10:10作业运行且在数据库中的时间间隔设置为20分钟

所以下一次作业应该在10:30运行

共有1个答案

甘祺
2023-03-14

如果使用Quartz,则可以实现自定义触发器。您的实现将在数据库中查找该值,并在下一次运行时返回GetFireTimeAfter

另一个选择是使用Spring调度API并实现触发器接口。与此相同,NextExecutionTime方法将决定下一次运行的时间。

使用自定义实现的优点是您可以完全控制触发逻辑(就像在您的例子中一样,在数据库中进行查找并动态设置下一个运行时间)。

 类似资料:
  • 我正在利用石英调度,有2个工作。第一个工作是执行大约2分钟的任务,第二个是设置为临时文件的清理操作。因此,我需要设置时间表,以一种方式工作,即在第一个作业被执行/完成执行任务后,我需要在第二个作业的帮助下进行清洁操作。 考虑到Quartz 2.1.x下的示例9-Job Listeners,该示例说明我们可以定义一个名为jobWasExecuted(_,_)的方法;并在第一个作业被执行/或处于运行状

  • 我是新的spring批处理框架和石英调度器。我的任务是使用quartz调度器动态调度一个新的spring批处理作业。所有新的spring批处理作业的条目都在我的数据库中,具有触发器表达式。问题是,对于每一个来自数据库的新的spring批处理作业,我们需要将其包装在Quartz的调度器作业中。这就意味着,当有许多spring批处理作业时,就应该有许多批处理作业类来包装它们,并由quartz调度程序运

  • 我想使用Quartz、Spring和Hibernate创建动态作业。用户与web服务交互以创建此类作业: NoaJobInstancesDAO是一个简单的DAO类,它利用了Hibernate的EntityManager: 问题是,当这个作业触发时,会抛出一个异常: 我不明白为什么!在Manager类中,我以这种方式安排作业 其中排定程序作为 Edit1:应用程序上下文的实例似乎正确。问题不可能在那

  • 我们有一个.NET项目,它检查远程计算机上是否存在一个文件。我们需要对一个部门内的多台远程计算机(数千台)执行此操作,每台计算机每天都在预定义的时间执行。执行时间是在数据库中指定的,它经常变化,每台远程计算机的执行时间都是不同的(有些可能是相同的)。为了实现这一点,我们计划使用Quartz调度器。由于我们是石英的新手,我们想知道如何实现这一点。在高层,我们需要这些- 调度程序应该在每天的特定时间启