有没有办法通过作业名称在 Quartz 中获取作业键 [英] Is there any way to get job keys in Quartz by job name

查看:32
本文介绍了有没有办法通过作业名称在 Quartz 中获取作业键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在我正在寻找在 Quartz 库中按作业名称获取作业键的功能.

我看到 Scheduler 有使用 GroupMatcher 按组名获取作业键的方法,Quartz 也有 NameMatcher 可以和 GroupMatcher

一样成为用户

SetgetJobKeys(NameMatcher matcher) 抛出 SchedulerException;

你知道这个功能在 Quartz 库中已经存在了吗?

解决方案

AFAIK 不存在使用 NameMatcher 按作业名称获取 JobKey 的 API.

然而,实际上很容易通过迭代键来从名称中获取作业的键:

public JobKey findJobKey(String jobName) {//首先检查正在运行的作业for (JobExecutionContext runningJob : scheduler.getCurrentlyExecutingJobs()) {if (Objects.equals(jobName, runningJob.getJobDetail().getKey().getName())) {返回 runningJob.getJobDetail().getKey();}}//如果没有找到,则检查所有作业for (String groupName : scheduler.getJobGroupNames()) {for (JobKey jobKey : scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) {if (Objects.equals(jobName, jobKey.getName())) {返回作业密钥;}}}}

Right now I'm searching for functionality to get job keys by job name in Quartz library.

I see that Scheduler has method to get job keys by group name using GroupMatcher<JobKey> also Quartz has NameMatcher which can be user in same way as GroupMatcher

Set<JobKey> getJobKeys(NameMatcher<JobKey> matcher) throws SchedulerException;

Do you know is this functionality already exists in Quartz library?

解决方案

An API for getting the JobKey by job's name using a NameMatcher does not exist AFAIK.

However, it's actually easy to get a job's key from its name just by iterating the keys:

public JobKey findJobKey(String jobName) {
    // Check running jobs first
    for (JobExecutionContext runningJob : scheduler.getCurrentlyExecutingJobs()) {
        if (Objects.equals(jobName, runningJob.getJobDetail().getKey().getName())) {
            return runningJob.getJobDetail().getKey();
        }
    }
    // Check all jobs if not found
    for (String groupName : scheduler.getJobGroupNames()) {
        for (JobKey jobKey : scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) {
            if (Objects.equals(jobName, jobKey.getName())) {
                return jobKey;
            }
        }
    }
}

这篇关于有没有办法通过作业名称在 Quartz 中获取作业键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆