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

标签 java maven triggers cron quartz

我正在开发一个 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/

相关文章:

mysql - 在更新时创建触发器以将旧值插入到 MYSQL 中的其他表中

java - liquibase 中的自动增量

Java GUI : JLabel as Bullet should fly through Jpanel, 仅给出 "result"

OSGI 中的 Java 货币引用实现

java - IntelliJ IDEA 16 添加maven依赖到类路径

java - Spring : java. lang.NoSuchMethodError : javax. persistence.Table.indexes()[Ljavax/persistence/Index;

eclipse - Eclipse Indigo 中 maven 的依赖层次 View

java - 如何从客户端计算机下载zip文件而不是使用java在浏览器中打开文件?

sql-server - 触发器未将数据放入历史表中

node.js - 基于时间的通知服务