grails 4
compile "org.grails.plugins:quartz-config-scheduler:4.0.0"
grails 3+
compile "org.grails.plugins:quartz-config-scheduler:2.0.0"
The plugin builds on top of quartz grails plugin and makes it possible to schedule quartz job on the fly from configuration.
Enable grails.plugin.quartz.autoStartup = true
And then schedule a closure job as shown below.
File application.groovy
or an external configuration file.
import org.quartz.Trigger
import org.quartz.Scheduler
import org.springframework.context.ApplicationContext
import grails.plugin.quartzconfigscheduler.ClosureJob
import org.quartz.JobExecutionContext
import org.quartz.TriggerBuilder
grails.plugin.quartz.jobSetup.testJob = { Scheduler scheduler, ApplicationContext context ->
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("closureJobTrigger")
.withSchedule(
simpleSchedule()
.withIntervalInMilliseconds(10)
.withRepeatCount(2)
).startNow().build()
Map jobParams = [param1:value1]
ClosureJob.schedule(trigger, jobParams) { JobExecutionContext jobCtx ->
println "Job executed"
}
}
grails.plugin.quartz.autoStartup
- set to true enable scheduling jobs from configuration on application startup.grails.plugin.quartz.jobSetup
- All jobs are configured under this key.
Plugin provides two job classes to setup jobs from configuration. ClosureJob
and SpringBeanJob
Plugin looks for configuration key grails.plugin.quartz.jobSetup
and each child key of it is considered as a job setup
It must be a closure, the closure gets executed on application startup and is passed two parameters Scheduler
and ApplicationContext
ClosureJob
provides one static method schedule
which takes a trigger, Map of job params and a closure and schedules the quartz job.
The closure is executed each time the job is triggered. The JobExecutionContext
is passed to the closure as argument.
Example
Trigger trigger //build trigger as per the need
ClosureJob.schedule(trigger, jobParams) { JobExecutionContext jobCtx ->
println "Job executed"
}
SpringBeanJob
can be used to schedule a job which will invoke a specified method on a configured spring bean.
The SpringBeanJob
provides a static method which takes Trigger
, spring bean name, method name and arguments to pass to the method as parameters
and calls the method on the spring bean with specified arguments every time the job is triggered.
Example import grails.plugin.quartzconfigscheduler.SpringBeanJob
File: application.groovy
Trigger trigger //build trigger as per the need
SpringBeanJob.schedule(trigger, "myService", "testMethod", "testArg")
class MyService {
void testMethod(String arg) {
println "Method is executed with arg $arg"
}
}