2016-04-29 4 views
0

Ich verwende Grails quartz plugin, um die Planung in unserer App zu implementieren. Ich habe einen Scheduler mit QuartzConfig.groovy Requisiten erstellt, der Clustered Scheduler ist. Ich möchte einen weiteren Scheduler in der gleichen App für Non-Clustered Scheduling.Mehrere Scheduler mit Gral Quarz-Plugin

Wie kann ich dies mit dem gleichen Grails Quarz-Plugin erreichen.

+0

Dann müssen Sie die gleiche Anwendung auf einem Stand-alone-Instanz laufen, aber es auf die gleiche Datenbank zeigt. Suchst du danach? – Armaiti

Antwort

0

Ich tue dies eine neue Scheduler Bohne in resources.groovy erstellen:

newQuartzScheduler(org.springframework.scheduling.quartz.SchedulerFactoryBean) { 
    Properties properties = new Properties() 
    properties.setProperty('org.quartz.threadPool.threadCount', 5) 
    quartzProperties = properties 

    autoStartup = false 
    waitForJobsToCompleteOnShutdown = true 
    exposeSchedulerInRepository = false 
    jobFactory = ref('quartzJobFactory') 
    globalJobListeners = [ref("${SessionBinderJobListener.NAME}"), ref("${ExceptionPrinterJobListener.NAME}")] 
} 

und den Code unten in BootStrap hinzuzufügen.

newQuartzScheduler.addJob(grailsApplication.mainContext.getBean('org.com.jobs.JobNameJobDetail'), true) 
newQuartzScheduler.start() 

Die ‚Detail‘ in Jobnamen notwendig ist, weil Quarz-Plugin eine Bohne für jeden Job erstellen und es schließt, dass Suffix an seinem Namen.

In meinem Fall muss ich eine andere Warteschlange haben, um nur einen meiner Aufträge auszuführen.

Das Quarz-Plugin fügt alle Jobs in Ihrem Scheduler hinzu.

Wenn Sie in beiden Disponenten alle Jobs haben müssen sehen doWithApplicationContext in QuartzGrailsPlugin Klasse