Is there any way to get job keys in Quartz by job name

末鹿安然 提交于 2020-01-04 04:13:08

问题


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?


回答1:


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;
            }
        }
    }
}


来源:https://stackoverflow.com/questions/43651304/is-there-any-way-to-get-job-keys-in-quartz-by-job-name

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!