问题
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