当前位置: 首页 > 面试题库 >

如何检查Quartz Cron作业是否正在运行?

司空昊阳
2023-03-14
问题内容

如何检查计划的Quartz Cron作业是否正在运行?是否有任何API可以进行检查?


问题答案:

scheduler.getCurrentlyExecutingJobs()在大多数情况下应该可以工作。但是请记住不要在Job类中使用它,因为它使用ExecutingJobsManager(a
JobListener)将正在运行的作业放到HashMap中,该HashMap在作业类之前运行,因此使用此方法检查作业是否正在运行肯定会返回true。一种简单的方法是检查点火时间是否不同:

public static boolean isJobRunning(JobExecutionContext ctx, String jobName, String groupName)
        throws SchedulerException {
    List<JobExecutionContext> currentJobs = ctx.getScheduler().getCurrentlyExecutingJobs();

    for (JobExecutionContext jobCtx : currentJobs) {
        String thisJobName = jobCtx.getJobDetail().getKey().getName();
        String thisGroupName = jobCtx.getJobDetail().getKey().getGroup();
        if (jobName.equalsIgnoreCase(thisJobName) && groupName.equalsIgnoreCase(thisGroupName)
                && !jobCtx.getFireTime().equals(ctx.getFireTime())) {
            return true;
        }
    }
    return false;
}

另请注意,此方法不支持群集。也就是说,它将仅返回当前在此Scheduler实例中执行的Job,而不返回整个集群。如果您在集群中运行Quartz,它将无法正常工作。



 类似资料:
  • 我想检查Quartz作业是否正在运行。我发现它可以使用调度程序。getCurrentlyExecutingJobs()。但是我对此感到困惑,我应该把它放在哪里才能得到结果呢?谢谢

  • 如何检查计划的Quartz cron作业是否正在运行?是否有API进行检查?

  • 问题内容: 我正在尝试创建一个bash实用程序脚本以检查我的服务器中是否正在运行docker守护进程。除了运行这样的代码之外,还有没有更好的方法来检查docker守护进程是否正在我的服务器中运行? 我想创建一个bash shell脚本,该脚本将检查我的docker守护程序是否正在运行。如果它正在运行,则什么也不做,如果没有,则启动docker守护程序。 我的伪代码是这样的。我正在考虑解析ps -e

  • 问题内容: 是否可以从工作流脚本中检查某项作业是否正在运行或已计划? 尽管使用阶段管理并发似乎足够: 并在以下阶段运行构建: 可能是有人手动开始工作 测试工作 ,而我只想在我的工作流程脚本中处理这种情况。例如,跳过构建或等待构建完成。 问题答案: 这适用于不使用 Groovy Sandbox的流 :

  • 问题内容: 我有这个独特的要求来检查给定的节点是否正在运行作业。我正在考虑使用groovy,因为它看起来是最简单的选择。 它使我能够找到从站是否在线。对我来说,下一步是检查它是否正在运行作业。 我正在考虑使用API函数setAcceptingTasks(false)来将slave标记为正在运行作业,以便下次当我使用isAcceptingTasks()查询时,我会得到false,因此不会在该slav

  • 我正在使用CuratorFramework(我还是个新手)来连接Zookeeper实例。我想导入配置,但在此之前,我想测试我的程序是否能够连接到Zookeeper。到目前为止,我有这样的想法: 我已经在本地机器上启动了ZooKeeper,我检查了与zkCli的连接,客户端可以连接到它。zookeeperCon变量设置为“127.0.0.1:2181”(我也尝试了localhost:2181)。问题