我正在使用Quartz2 Plugin,并试图动态触发一个非常简单的工作。当用户执行某个动作时,该作业应该在未来的某个特定分钟数内触发,并且只运行一次。
我尝试使用简单的“计划”方法来获取日期和工作数据:
def sendTime = new Date()
use(groovy.time.TimeCategory) {
sendTime = sendTime + (connectionInstance.timeout).minutes
println "I will send the job at $sendTime"
}
ReportSmssyncTimeoutJob.schedule(sendTime, [connectionId:params.id])
在这个设置中,我发现作业实际上是立即触发的,而不是等到“sendTime”。
在查看插件源之后,我的第二次尝试是使用 SimpleTrigger
def sendTime = new Date()
use(groovy.time.TimeCategory) {
sendTime = sendTime + (connectionInstance.timeout).minutes
println "I will send the job at $sendTime"
}
// arguments here are: jobKey='test', startTime=sendTime, repeatCount=0, repeatInterval=1 (zero not allowed), job-arguments)
def trigger = TriggerHelper.simpleTrigger(new JobKey("test"), sendTime, 0, 1, [connectionId:params.id])
ReportSmssyncTimeoutJob.schedule(trigger)
在此设置中,作业也会立即触发。SimpleTrigger 实现是否有问题阻止它等到 startDate?
不幸的是,切换到主要的 'quartz' 插件(现在支持 Quartz 2)不是一个选项,因为我正在处理一个项目,该项目设置了很多工作来使用 Quartz2 插件。