有什么方法可以通过作业名称在 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;
}
}
}
}
现在我正在搜索通过作业名称在 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;
}
}
}
}