Quartz2プラグインを使用していて、非常に単純なジョブを動的にトリガーしようとしています。ユーザーが特定のアクションを実行すると、ジョブは将来特定の分数だけトリガーされ、1回だけ実行される必要があります。
日付とジョブデータを取得する単純な「schedule」メソッドを使用してみました。
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」まで待機するのではなく、実際にはすぐにトリガーされることがわかりました。
プラグインソースを確認した後の2番目の試みは、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プラグインで動作するように設定されたジョブがたくさんあるプロジェクトに取り組んでいるからです。