Java 有没有办法通过作业名称获取Quartz中的作业密钥

Java 有没有办法通过作业名称获取Quartz中的作业密钥,java,quartz-scheduler,Java,Quartz Scheduler,现在我正在搜索功能,以便在Quartz库中按作业名称获取作业密钥 我看到Scheduler有一种方法,可以使用GroupMatcher通过组名来获取作业密钥,而Quartz也有NameMatcher可以通过与GroupMatcher Set<JobKey> getJobKeys(NameMatcher<JobKey> matcher) throws SchedulerException; Set-getJobKeys(NameMatcher-matcher)抛出Sche

现在我正在搜索功能,以便在Quartz库中按作业名称获取作业密钥

我看到
Scheduler
有一种方法,可以使用
GroupMatcher
通过组名来获取作业密钥,而
Quartz
也有
NameMatcher
可以通过与
GroupMatcher

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

您知道Quartz library中已经存在此功能吗?

目前还不存在使用
名称匹配器按作业名称获取
作业密钥的API

但是,实际上,只需迭代这些键,就可以从作业名称中获取作业的键:

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

您可以使用GroupMatcher.anyGroup()跳过scheduler.getJobGroupNames()循环,因为您无论如何都要遍历它们。