使用自定义触发器和参数计划作业
我正在使用Grails Quartz插件,并希望使用程序创建的触发器来安排我的作业。 我不知道执行间隔会是什么。 我希望工作无限期地执行。
文档给出了一些如何计划/触发作业的例子:
==动态作业调度==
从0.4.1版本开始,您可以动态安排作业执行。
这些方法可用:
MyJob.schedule(String cronExpression, Map params?)
创建cron触发器; MyJob.schedule(Long repeatInterval, Integer repeatCount?, Map params?)
创建简单的触发器:重复执行repeatCount + 1次,延迟repeatInterval毫秒; MyJob.schedule(Date scheduleDate, Map params?)
将一项作业执行安排到特定日期; MyJob.schedule(Trigger trigger)
使用自定义触发器来安排作业的执行; MyJob.triggerNow(Map params?)
强制立即执行作业。
每个方法(自定义触发器除外)都有可选的'params'参数。 您可以使用它将一些数据传递给您的工作,然后从工作中访问它。
Grails版本1.3.7 Quartz插件版本0.4.2
那么,为什么MyJob.schedule(Trigger trigger)
不带参数? 而且,如何使用自定义触发器和地图或参数来实现我想要的功能?
如果你在Quartz插件源代码中查看这些方法的定义,你可以看到所有带Map params
的函数都是包装器,它们创建一个Trigger
,然后将其发送给调度器。
MyJob.schedule(Trigger trigger)
方法只是触发你传递的触发器,所以在你调用这个方法之前,你需要将你的参数添加到Triggers jobDataMap
属性中,例如:
trigger.jobDataMap.putAll [foo:"It Works!"]
MyJob.schedule( trigger )
tim答案是正确的,这里有点更新。
Trigger trigger = TriggerBuilder
.newTrigger()
.startNow()
.withIdentity("triggerName", "groupName")
.withSchedule(
SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(5000).repeatForever()
).build();
trigger.jobDataMap.putAll([foo:"bar"])
MyJob.schedule(trigger)
链接地址: http://www.djcxy.com/p/23623.html
上一篇: Schedule Job with custom Trigger and params
下一篇: Undoing git reset?