我正在使用grails quartz plugin在我们的应用程序中实现计划。我已经使用QuartzConfig.groovy属性创建了一个调度程序,它是集群调度程序。我想要在同一应用程序中为非集群调度添加一个调度程序。
我如何使用相同的grails quartz 插件来实现这一点。
最佳答案
我这样做是在resources.groovy中创建一个新的调度程序bean:
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}")]
}
并在BootStrap中添加以下代码。
newQuartzScheduler.addJob(grailsApplication.mainContext.getBean('org.com.jobs.JobNameJobDetail'), true)
newQuartzScheduler.start()
作业名称中的“详细信息”是必需的,因为Quartz插件会为每个作业创建一个bean,并在其名称后包含该后缀。
就我而言,我需要有一个不同的队列来仅执行我的一项工作。
quartz 插件将所有作业添加到调度程序中。
如果需要在两个调度程序中都包含所有作业,请参见QuartzGrailsPlugin类中的doWithApplicationContext
关于grails - 使用grail quartz 插件的多个调度程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36941121/