簡體   English   中英

如何使用Grails Quartz2插件在指定時間設置一次性工作觸發器

[英]How to set up a one-off job trigger at a specified time using Grails Quartz2 plugin

我正在使用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插件一起使用。

我在Grails郵件列表中詢問了此問題,並得到了答案:這是quartz2插件中的錯誤。 它應該在下一個版本中修復(錯誤已在0.2.3中指出)。

更新:在quartz2插件的v2.1.6.2中對此進行了測試,並且可以確認我問題中的兩種方法現在都可以使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM