当前位置: 首页 > 知识库问答 >
问题:

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

衡子琪
2023-03-14
  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"] )
} 

共有1个答案

巴照
2023-03-14

更正包路径,然后可以使用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')
        ...
    }
}
 类似资料:
  • 概览 触发器配置卡片 此面板配置一些触发器的基本信息,或者进行查阅触发器触发日志等操作。 触发类型目前有两种: 数据表 微信支付回调 条件卡片 对应上面的触发类型,设置不同触发类型的参数。 动作卡片 当触发器的条件被满足,将会执行触发器中的动作。 目前有四种动作类型可选,分别如下: 邮件 微信模板消息 webhook 数据表操作 不同的触发类型对应可选的动作类型不同,每个动作类型又有可选模板变量的

  • 我正在使用Java web应用程序中的quartz实现。我们已经实现了TriggerListener类,因此当触发器触发时,它会调用vetoJobExecution(触发器触发器,JobExecutionContext JobExecutionContext)方法。我们检查一个引用表,看看作业是否应该运行。所有这些工作都很好。 断开的部分是如果作业不应该运行,因此vetoJobExecution方

  • 我想知道是否有一个函数/方法来创建随机时间触发的作业。我的意思是,如果我设置一个cron计划在每周一上午10:00触发,并给出一个时间间隔,比方说30分钟,触发器将总是在9:30到10:30之间关闭。例如,这是cron调度表。

  • 问题内容: 假设我有一个类似 测试此bean实际上将在其指定日期( 即 最接近每月15日的工作日)触发的最佳方法是什么? 更新 :这应该是一个单元测试,所以我不会启动虚拟机或更改系统时间。 问题答案: 首先,没有必要进行自我测试。它是spring框架的一部分,已经过测试。 更好的测试可能是测试您的cron表达式是否符合您的期望。这里的一种选择是使用Quartz的类。给定一个对象,您可以调用,该表达

  • 问题内容: 我想在小型和简单的Web应用程序中使用石英。(Quartz 2.1.6和tomcat 7.0.22)。我想更改触发器cron表达式而无需重新启动应用程序。我把工作放在xml文件中并在 问题:当我更改的内容时,石英胶粘剂文件已更改并重新加载,删除并创建新作业。我在日志文件中看到它。但是此文件的内容很旧(与启动时一样)。 所以我在文件系统中有新版本的,但是quartz需要该文件的旧版本。