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

如何将石英作业设置为仅当另一个作业完成或停止时才开始?

孙钱青
2023-03-14

如果一项工作没有在10分钟内完成,在接下来的10分钟内另一项工作将开始。

我想要的是:下一个作业(每10分钟后)应该启动,只有在前一个作业已经完成运行的情况下。有什么办法可以做到吗?

共有1个答案

陈项禹
2023-03-14

石英文件

@DisallowConcurrentExecution是一个可以添加到作业类中的注释,它告诉Quartz不要并发执行给定作业定义(引用给定作业类)的多个实例。请注意这里的措辞,因为它是非常谨慎地选择的。在上一节的示例中,如果“SalesReportJob”具有此注释,则在给定时间只能执行“SalesReportForJoe”的一个实例,但它可以与“SalesReportForMike”的一个实例并发执行。约束基于实例定义(JobDetail),而不是基于job类的实例。然而,(在Quartz的设计过程中)决定在类本身上进行注释,因为它经常会对类的编码方式产生影响。

如果不希望SalesReportForMike和SalesReportForJoe并发运行,那么可以将调度程序的线程池大小设置为1。因此在任何给定的时间只有一个作业将运行。

 类似资料:
  • 我想用Quartz实现下面的算法,但不确定是否可以做到。这是我第一次尝试使用石英。 用户通知作业-此作业计算每月报告并向用户发送电子邮件,它需要用户id和用于生成自定义用户报告的其他参数 可能需要生成10,000多个这样的报告 null 如何确保每月作业在单个事务中执行,以便识别所有需要每月报告的用户,并安排作业通知他们 如何立即安排作业在创建它们的作业之后立即执行? 我用的是Spring 3.2

  • 问题内容: 我有一些任务是在Java Quartz Jobs的帮助下执行的,但是我需要在某些情况下在代码中停止某些任务。我读到这可以通过InterruptableJob完成。但是我不知道我应该怎么做? 问题答案: 您需要将您的工作写成InterruptableJob的实现。要中断此作业,您需要Scheduler的句柄,然后调用 请查看上述类的@javadoc,石英发行版也包含此示例(example

  • 将库升级到和(查找FTP库中可能的bug)我设法持续了3周 我有一个要监视,该作业表示触发器状态为。应用程序服务器不重用阻塞进程的 我没有找到关于Quartz这类问题的文档,因此我怀疑是FTP库中的bug干扰了Quartz启动的线程,例如的使用

  • 我有点困惑,因为当通过HTTP请求启动Spring Batch作业的执行时,如果我在作业执行时收到另一个HTTP请求来启动相同的作业,但参数不同,则正在执行的作业停止未完成并开始处理新作业。 我开发了一个API REST来加载和处理Excel文件的内容。web服务公开了两个endpoint,一个用于加载、验证和存储数据库中Excel文件的内容,另一个用于开始处理存储在数据库中的记录。 > POST

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