有什么方法可以通过作业名称在 Quartz 中获取作业密钥

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

现在我正在搜索通过作业名称在 Quartz 库中获取作业密钥的功能。

我看到 Scheduler 有使用 GroupMatcher<JobKey> 按组名获取作业密钥的方法 Quartz 也有 NameMatcher 可以使用与 GroupMatcher

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

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

使用 NameMatcher 通过作业名称获取 JobKey 的 API 不存在 AFAIK。

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

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