检查作业是否已在运行,请跳过新的cron实例作业

时间:2019-01-02 10:09:54

标签: java maven triggers cron quartz

我正在从事一个有n个Maven工作的春季项目。我对任何工作都有明确的表述。我想在创建新的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进行比较?

1 个答案:

答案 0 :(得分:1)

方法1: 您可以将作业详细信息存储在数据库中,还可以检查正在运行的作业(如果要使用spring batch来执行相同的任务)(在数据库中维护作业状态)。

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