【问题标题】:Check if job is already running, skip new cron instance job [duplicate]检查作业是否已经在运行,跳过新的 cron 实例作业 [重复]
【发布时间】:2019-01-02 10:09:54
【问题描述】:

我正在从事一个有 n 个 maven 工作的春季项目。对于任何工作,我都有一个 cron 表达式。我想在创建新的 cron 作业之前检查作业是否已经在运行。我怎样才能做到这一点?

我拿一份工作给你看一个例子。 在quartz-context.xml 中,我定义了bean,设置了从属性文件中获取值的cron 表达式属性、组属性和作为用于设置作业参数的类的作业详细信息。 这是课程:

public class DataImportJobDetail extends AbstractJobDetail {

    @Override
    protected JobParameters setupJobParameters(JobParameters jobParameters, 
            JobExecutionContext context, String jobName) {
        JobParametersBuilder builder = new JobParametersBuilder(jobParameters);

        builder.addString(ConfigManager.PARAM_MODE, ConfigManager.MODE_PERSIST);
        return builder.toJobParameters();
    }
} 

我想我必须在这里创建一个控件,通过获取当前正在执行的作业列表并将其与jobName 进行比较?

【问题讨论】:

标签: java maven triggers cron quartz


【解决方案1】:

方法一: 您可以将作业详细信息存储在数据库中,如果您将使用 Spring Batch 执行相同的任务(维护数据库中的作业状态),则可以检查哪些作业正在运行。

方法 2: 如果您只想检查作业是否正在运行,您可以在作业开始时创建一个临时文件,并在作业完成时删除。如果文件存在意味着作业正在运行,否则不运行。

【讨论】:

  • 是的,我还有一个类和一个方法可以在数据库中控制作业是否存在并且正在运行并给出jobName,但我不知道我是否可以在上面的类中执行此控制?抱歉,我是一名初级程序员,这是我第一次接触 spring/maven
猜你喜欢
  • 2018-06-15
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 2018-04-02
  • 2015-02-21
  • 1970-01-01
相关资源
最近更新 更多