2017-04-27 2 views
2

zu bekommen Ich suche gerade nach Funktionalität, Jobschlüssel nach Auftragsname in Quartz-Bibliothek zu erhalten.Gibt es eine Möglichkeit, Jobschlüssel in Quartz nach Jobname

Ich sehe, dass Scheduler Methode Job Schlüssel von Gruppennamen erhalten hat GroupMatcher<JobKey> auch Quartz verwendet, hat NameMatcher, die als Benutzer in gleicher Weise sein kann GroupMatcher

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

Wissen Sie, diese Funktionalität bereits in Quarz-Bibliothek vorhanden ?

Antwort

3

Eine API zum Abrufen des JobKey nach Auftragsname unter Verwendung einer NameMatcher existiert nicht AFAIK.

aber es ist eigentlich einfach, eine Aufgabe, Schlüssel aus seinem Namen zu bekommen nur durch die Schlüssel iterieren:

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