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



我正在做一个有n个maven工作的春季项目。我有一个适用于任何工作的 cron 表达式。我想在创建新的 cron 作业之前检查作业是否已运行。我该怎么做?

我举一个例子。在石英上下文中.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:您可以将作业详细信息存储在数据库中,如果您将使用 spring batch 它执行相同的任务(在数据库中维护作业状态),则可以检查哪些作业正在运行。

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

最新更新