现在我正在寻找在 Quartz 库中按作业名称获取作业键的功能。
我看到Scheduler
有办法使用GroupMatcher<JobKey>
按组名获取作业密钥,Quartz
也有NameMatcher
,可以以与GroupMatcher
相同的方式成为用户
Set<JobKey> getJobKeys(NameMatcher<JobKey> matcher) throws SchedulerException;
您知道此功能是否已经存在于石英库中?
用于使用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;
}
}
}
}