Java 有没有办法通过作业名称获取Quartz中的作业密钥
现在我正在搜索功能,以便在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
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()循环,因为您无论如何都要遍历它们。