使用来自控制器的触发器执行Quartz作业

Tyl*_*rty 5 grails groovy quartz-scheduler

我可以从作业文件夹中的静态触发器运行一个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       
     }
  }
Run Code Online (Sandbox Code Playgroud)

控制器呼吁工作

package example

class UserController {
    def quartzScheduler 
    ...
    //user is created
    ...                     
    TaskReminderJob.triggerNow([name:"frank",email:"frank@test.com"] )
} 
Run Code Online (Sandbox Code Playgroud)

Ali*_*dad 12

更正您的包路径,然后您可以使用triggerNow方法手动触发您的作业.如果你需要传递任何参数,你可以像这样传递:

package com.example

class UserController {
     def someAction(){
        ...
        TaskReminderJob.triggerNow([id:params.id])
     }
Run Code Online (Sandbox Code Playgroud)

工作

package com.example

class TaskReminderJob {
    static triggers = {}

    def execute(context) {
        def id = context.mergedJobDataMap.get('id')
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)