当前位置: 首页 > 面试题库 >

如何进行“顺序”作业调度(石英?)

储思聪
2023-03-14
问题内容

我正在使用“石英计划”,并且有2个工作。第一项作业将执行大约2分钟的任务,第二项作业将被设置为清理临时文件。因此,我需要设置计划表,使其工作方式如下:在执行完第一项任务/完成任务后,我需要在第二项任务的帮助下进行清洁操作。
考虑示例9-Quartz 2.1.x下的作业侦听器,它声明我们可以定义一个名为jobWasExecuted()的方法;在Job
Listener中,它在第一个作业执行/或进入运行状态时执行。
我们是否可以设置时间表,以监听第一项工作的完成,然后执行第二项?要么,
我们是否能够像Java Multithreading中那样定义join()方法,该方法可以在第一个作业完成时执行?


问题答案:

当前,没有使用Quartz链接触发器的“直接”或“免费”方法。但是,有多种方法可以轻松完成它。以下是几种方法的概述:

一种方法是使用侦听器(即TriggerListener,JobListener或SchedulerListener),该侦听器可以注意到作业/触发器的完成,然后立即计划要触发的新触发器。这种方法可能会涉及到一些问题,因为您必须告知侦听器哪个作业随后执行-
并且您可能需要担心此信息的持久性。

另一种方法是构建一个Job,在JobDataMap中包含要触发的下一个作业的名称,并在作业完成时(其Execute()方法的最后一步)使作业计划下一个作业。有几个人正在这样做,祝你好运。大多数人都创建了一个Job类的基类(抽象类),该类知道如何使用特殊键(常量)从JobDataMap中获取作业名称和组,并包含用于调度已标识作业的代码。然后,他们只是对该类进行扩展,包括该工作应做的其他工作。

参考:http : //www.quartz-
scheduler.net/documentation/faq.html#how-do-i-chain-job-
execution ? -or,-how-do-i-create-a-
workflow吗?



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

  • 我正在使用和以及集群模式下的oracle db,我正在使用所有quartz api,因为我面临spring支持的quartz api的问题。 我的作业类中有一些依赖项没有初始化,我在调度程序上下文中传递了这些依赖项,然后它就开始工作了。 问题是我的cron表达式是每5分钟运行一次

  • 是否可以添加/删除/修改在Quartz Spring Boot中动态安排的作业(在运行时),由使用我的门户的最终用户。由于计划无法从外部访问,我不知道有什么办法。基本上,我需要将所有的时间表信息存储到数据库中并访问它们。Im构建的门户将被大量用户使用,实现这一目标的正确解决方案是什么? 否则我可以像下面这样使用cron吗 每5 mns扫描一次作业以实现此目的。

  • 问题内容: 我正在寻找python的企业任务计划程序,就像石英是Java一样。要求: 持久:如果进程重新启动或计算机重新启动,则所有作业必须保留在该位置,并且必须在重新启动后解雇。 作业必须在事务中进入和退出调度程序(即,如果某个数据库操作失败,在与调度程序无关的数据库中,则作业必须没有退出或进入调度程序)。 可扩展性。取决于项目成功的程度,但是我更希望从一开始就知道我不是从无到有来。 可配置性:

  • 假设我在Hadoop环境中资源有限,我不想安排长时间运行的作业(即需要几天时间才能完成)。我正在分析大量过去的时间序列数据。我想安排一次需要一天数据的mapreduce作业(这需要一个小时来处理)。 那么,我如何安排,使新的工作提交后,前一个工作完成?

  • 当我启动石英调度程序时,它不会触发我的工作。我的工作被安排在每个小时。但是启动我的调度程序后,我的第一个工作在一个小时后被触发。我是石英新手。下面是我的石英启动代码