我正在做一个有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:如果您只想检查作业是否正在运行,您可以在作业开始时创建临时文件,并在作业完成时删除。如果文件存在,则表示作业正在运行,否则未运行。