我可以从作业文件夹中的静态触发器运行一个cron,它会执行,但是当我尝试从我的控制器触发一个触发器时,它只是失败了...我错过了什么?
错误代码:没有方法签名:static com.example.TaskReminderJob.triggerNow()适用于参数类型:(java.util.LinkedHashMap)值:[[params:[name:Frank,email:frank @ test .COM]]]
grails-app / jobs / example中的Quartz Job
package com.example
class TaskReminderJob {
def reminderMailService
static triggers = { }
def execute(context) {
def email = context.mergedJobDataMap.get('email')
def name = context.mergedJobDataMap.get('name')
reminderMailService.remindMail1(name, email) //send email via service
}
}
控制器致电招聘
package example
class UserController {
def quartzScheduler
...
//user is created
...
TaskReminderJob.triggerNow([name:"frank",email:"frank@test.com"] )
}
答案 0 :(得分:12)
更正您的包裹路径,然后您可以使用triggerNow
方法手动触发您的作业。如果您需要将任何参数传递给它,您可以像这样传递它:
package com.example
class UserController {
def someAction(){
...
TaskReminderJob.triggerNow([id:params.id])
}
工作
package com.example
class TaskReminderJob {
static triggers = {}
def execute(context) {
def id = context.mergedJobDataMap.get('id')
...
}
}