我正在开发一个 Spring 项目,该项目有 n 个 Maven 作业。我有一个适用于任何工作的 cron 表达式。我想在创建新的 cron 作业之前检查作业是否已经在运行。我怎样才能做到这一点?
我拿一份工作来给你举个例子。 在quartz-context.xml 中,我定义了bean,设置了从属性文件中获取值的cron 表达式属性、组属性以及用于设置作业参数的类的作业详细信息。 这是类(class):
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: 如果您只想检查作业是否正在运行,您可以在作业启动时创建一个临时文件,并在作业完成时删除。如果文件存在则意味着作业正在运行,否则未运行。
关于java - 检查作业是否已在运行,跳过新的 cron 实例作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54004426/