Quartz

2009-06-29 31 views
6

ile bir kümede şu anda yürütmekte olan tüm işlerin bir listesini alın Kuvarsın Scheduler.getCurrentlyExecutingJobs() yöntemi küme farkında değil. Tüm yürütme işlerinin bir listesini almak için insanlar hangi yöntemi kullanıyor?Quartz

cevap

0

API'nin tamamen işlediği için veritabanına doğrudan erişmenin bir yolu olduğu düşünülebilir.

Bu amaçla Jiralarında bir sorun var. Sonuç olarak, kümelenmenin farkında olmasını sağlamak istiyorlarsa, programlama mekanizmasını elden geçirmeniz gerekir. http://jira.opensymphony.com/browse/QUARTZ-372

3

zamanlama mekanizması her an olmuyor elden Görünüşe göre

Sen başvurabilir.

Yani, burada doğrudan tabloyu kontrol ediyorum nasıl - İstersen grup desteği eklemek o:

class QuartzClusterJobStatusService 
{ 
    def quartzScheduler 

    boolean isJobRunning(String job) { 
     return isJobRunningHere(job) || isJobRunningElsewhere(job) 
    } 

    boolean isJobRunningHere(String job) { 
     for (JobExecutionContext j : quartzScheduler.getCurrentlyExecutingJobs()) { 
      if (new JobKey(job,"GRAILS_JOBS").equals(j.jobDetail.key)) { 
       return true 
      } 
     } 
     return false 
    } 

    boolean isJobRunningElsewhere(String job) { 
     JobStoreSupport js = quartzScheduler.sched.resources.jobStore 
     if (!js.isClustered()) { 
      return false 
     } 
     Connection conn = DBConnectionManager.getInstance().getConnection(js.getDataSource()); 
     PreparedStatement stmt = null 
     try { 
      stmt = conn.prepareStatement("SELECT 1 FROM " + js.getTablePrefix() + "FIRED_TRIGGERS where JOB_NAME = ?") 
      stmt.setString(1, job) 
      ResultSet rs = stmt.executeQuery() 
      return rs.next() 
     } finally { 
      if (stmt != null) 
       stmt.close() 
     } 
    } 
} 
İlgili konular