我正在从事一个有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
进行比较?
答案 0 :(得分:1)
方法1: 您可以将作业详细信息存储在数据库中,还可以检查正在运行的作业(如果要使用spring batch来执行相同的任务)(在数据库中维护作业状态)。
方法2: 如果只想检查作业是否正在运行,则可以在作业开始时创建一个临时文件,并在作业完成时删除它。如果文件存在,则意味着作业正在运行,否则未运行。