首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Grails中动态更改Quartz CRON表达式

在Grails中动态更改Quartz CRON表达式,可以通过以下步骤实现:

  1. 首先,确保你已经在Grails应用程序中集成了Quartz插件。可以在build.gradle文件中添加以下依赖项:
代码语言:groovy
复制
compile 'org.grails.plugins:quartz:2.0.13'
  1. 创建一个用于动态更改CRON表达式的方法。在Grails中,可以在服务(Service)或控制器(Controller)中创建该方法。以下是一个示例方法:
代码语言:groovy
复制
import grails.transaction.Transactional
import org.quartz.CronTrigger
import org.quartz.JobDetail
import org.quartz.Scheduler
import org.quartz.SchedulerFactory
import org.quartz.TriggerKey

@Transactional
class QuartzService {

    def schedulerFactory

    def changeCronExpression(String triggerName, String cronExpression) {
        SchedulerFactory sf = schedulerFactory
        Scheduler scheduler = sf.scheduler

        TriggerKey triggerKey = TriggerKey.triggerKey(triggerName)
        CronTrigger trigger = scheduler.getTrigger(triggerKey) as CronTrigger

        if (trigger != null) {
            trigger.setCronExpression(cronExpression)
            scheduler.rescheduleJob(triggerKey, trigger)
        }
    }
}
  1. 在需要更改CRON表达式的地方调用该方法。例如,在控制器中:
代码语言:groovy
复制
class MyController {

    def quartzService

    def updateCronExpression() {
        String triggerName = "myTrigger"
        String cronExpression = "0 0/5 * * * ?" // 新的CRON表达式

        quartzService.changeCronExpression(triggerName, cronExpression)
    }
}

在上述示例中,changeCronExpression方法接受两个参数:triggerNamecronExpressiontriggerName是要更改的Quartz触发器的名称,cronExpression是新的CRON表达式。

注意:在使用此方法之前,确保已经创建了相应的Quartz触发器和作业。

这是一个基本的示例,你可以根据自己的需求进行修改和扩展。关于Grails和Quartz的更多信息,可以参考腾讯云的Grails文档Quartz文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

cron表达式何在SpringBoot应用

Cron 计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思。在Linux,我们经常用到 cron 服务器来完成这项工作。cron服务器可以根据配置文件约定的时间来执行特定的任务。...自动生成cron表达式 : http://qqe2.com/cron 表达式 Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义。...dd 日 E HH 点 mm 分 ss 秒").format(new Date())); } /** * 间隔五秒,单线程 */ @Scheduled(cron...需要开启异步多线程注解,定时任务添加异步注解 */ /** * 九点到二十二点半小时提醒一次,单线程 */ @Async //异步 @Scheduled(cron...ss 秒").format(new Date())); } /** * 间隔五秒,单线程 */ @Async //异步 @Scheduled(cron

1.2K40

动态更改 Spring 定时任务 Cron 表达式的优雅方案!

@Scheduled支持下面三种配置执行时间的方式: cron(expression):根据Cron表达式来执行。...到定时任务真正启动之前,我们都有机会更改任务的执行周期等参数。...能否在定时任务已经在执行过的情况下,去动态更改Cron表达式,甚至禁用某个定时任务呢?很遗憾,默认情况下,这是做不到的,任务一旦被注册和执行,用于注册的参数便被固定下来,这是不可变的部分。...而表达式“-”则作为一个特殊的标记,用于禁用某个定时任务。 当然,禁用后的任务通过重新赋予新的 Cron 表达式,是可以“复活”的。...Unavailable Say Bar Say Unavailable Say Bar 小结 我们在上文通过定时刷新和重建任务的方式来实现了动态更改Cron表达式的需求,能够满足大部分的项目场景,而且没有引入

75610
  • java基于SSM的Quartz计划任务配置

    1.Cron表达式时间字段 Cron表达式时间字段 位置 时间域名 允许值 允许的特殊字符 1 秒 0-59 , - * / 2 分钟 0-59 , - * / 3 小时 0-23 , - * / 4...L在日期字段,表示这个月份的最后一天,如一月的31号,非闰年二月的28号;如果L用在星期中,则表示星期六,等同于7。...6#3表示当月的第三个星期五(6表示星期五,#3表示当前的第三个),而4#5表示当月的第五个星期三,假设当月没有第五个星期三,忽略不触发;  C:该字符只在日期和星期字段中使用,代表“Calendar...1C在星期字段相当于星期日后的第一天。 Quartz使用Cron表达式定义时间规则 实现 方法无心一次性写完,先整理一个以前用的,后期一点点直至增加到可动态更改时间的为止。...方法一 1、springquartz配置 <bean id="job2" class="org.springframework.scheduling.<em>quartz</em>.MethodInvokingJobDetailFactoryBean

    1.4K10

    SpringBoot官方支持任务调度框架,轻量级用起来也挺香!

    Quartz简介 Quartz是一款功能强大的开源任务调度框架,几乎可以集成到任何Java应用程序(小到单机应用,大到分布式应用)。...Trigger(触发器):Quartz的触发器,可以通过CRON表达式来指定任务执行的时间,时间到了会自动触发任务执行。...Job(任务):Quartz具体的任务,包含了执行任务的具体方法。 CRON表达式 Cron表达式是一个字符串,包括6~7个时间元素,在Quartz可以用于指定任务的执行时间。...DayofMonth使用5W,如果5日是星期六,则将在最近的工作日4日触发一次 在线CRON表达式生成器 其实CRON表达式无需多记,需要使用的时候直接使用在线生成器就可以了,地址:https://cron.qqe2...整合SpringBoot使用 接下来我们讲下如何在SpringBoot中使用Quartz来实现任务调度,在电商系统往往会有需要定时发送邮件或者站内信的需求,我们以此为场景来实现下!

    1.3K20

    Spring Boot 2.X(十二):定时任务

    :每隔10秒执行一次(按照 corn 表达式规则执行) Cron 表达式 1.Cron表达式格式 {秒} {分} {时} {日} {月} {周} {年(可选)} 2.Cron 表达式字段取值范围及说明.../ L C # Year(年) 取值范围(1970-2099),允许为空值 , - * / 3.Cron 表达式特殊字符的意义 特殊字符 说明 * 表示可以匹配该域的所有值 ?...当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为? / 表示为每隔一段时间。 0 0/10 * ?...”2#1”表示本月第二周的星期日 4.Cron 在线生成工具 http://www.bejson.com/othertools/cron/ 动态定时任务 1.实现 SchedulingConfigurer..., '2019-10-30 13:40:34', NULL, 0); COMMIT; SET FOREIGN_KEY_CHECKS = 1; 3.从数据库读取 cron 表达式值 CronTrigger

    58321

    Spring Boot 2.X(十二):定时任务

    Quartz Quartz 是一个功能比较强大的调度器,支持在指定时间运行,也可以按照指定频率执行。缺点是使用起来相对麻烦。.../ L C # Year(年) 取值范围(1970-2099),允许为空值 , - * / 3.Cron 表达式特殊字符的意义 特殊字符 说明 | 表示可以匹配该域的所有值 ?...当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为? / | 表示为每隔一段时间。 0 0/10 * * * ?..."2#1"表示本月第二周的星期日 4.Cron 在线生成工具 http://www.bejson.com/othertools/cron/ 动态定时任务 1.实现 SchedulingConfigurer..., '2019-10-30 13:40:34', NULL, 0); COMMIT; SET FOREIGN_KEY_CHECKS = 1; 3.从数据库读取 cron 表达式值 CronTrigger

    94421

    Quartz任务调度快速入门

    当仅需触发一次或者以固定时间间隔周期执行,SimpleTrigger是最适合的选择;而CronTrigger则可以通过Cron表达式定义出各种复杂时间规则的调度方案:每早晨9:00执行,周一、周三、周五下午...Cron表达式 Quartz使用类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成,如表1所示: 表1 Cron表达式时间字段 位置 时间域名 允许值 允许的特殊字符.../ L C # 7 年(可选) 空值1970-2099 , - * / Cron表达式的时间字段除允许设置数值外,还可使用一些特殊的字符,提供列表、范围、通配符等功能,细说如下: ●星号(*):可用在所有字段...1C在星期字段相当于星期日后的第一天。 Cron表达式对特殊字符的大小写不敏感,对代表星期的缩写英文大小写也不敏感。...;①-2:定义Cron表达式 cronTrigger.setCronExpression(cexp);①-3:设置Cron表达式 SchedulerFactory schedulerFactory

    927100

    Quartz任务调度快速入门

    当仅需触发一次或者以固定时间间隔周期执行,SimpleTrigger是最适合的选择;而CronTrigger则可以通过Cron表达式定义出各种复杂时间规则的调度方案:每早晨9:00执行,周一、周三、周五下午...Cron表达式 Quartz使用类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成,如表1所示: 表1 Cron表达式时间字段 位置 时间域名 允许值 允许的特殊字符.../ L C # 7 年(可选) 空值1970-2099 , - * / Cron表达式的时间字段除允许设置数值外,还可使用一些特殊的字符,提供列表、范围、通配符等功能,细说如下: ●星号(*):可用在所有字段...1C在星期字段相当于星期日后的第一天。 Cron表达式对特殊字符的大小写不敏感,对代表星期的缩写英文大小写也不敏感。...;①-2:定义Cron表达式 cronTrigger.setCronExpression(cexp);①-3:设置Cron表达式 SchedulerFactory schedulerFactory

    1.3K70

    集群及分布式定时任务中间件MEE_TIMED

    ,其中 scheduled 属于轻量级的设计 默认集成在 spring-context 包,所以springboot使用 scheduled 简单快捷, 既然简单也必有简单的局限(后面会聊),quartz...spring scheduled 所面临的问题: CRON表达式过于简单,不支持复杂的表达式,比如每月最后一天,虽然提供zone支持但在特殊的国度,如在美国,无法计算夏令时及冬令时的偏差 当@Schedules...、应用信息等等) 加锁过程可能存在不必要的更新操作(这是代码问题) 基于现有情况我改造了 scheduled,用较少的更改 做出了处于 scheduled 及 quartz 中间的定时任务组件,这就是...的 CronExpression,支持更灵活更复杂的CRON表达式 修改掉 scheduled 内部默认单线程的问题,提供线程池支持 固定于spring强绑定的api,尽量与springboot兼容性做到最佳...data:{"key":"执行数据"} <===== 后续计划 首先是传参考虑做反序列化处理,在必要场景下这是需要的 fix bug,当然这需要码友多多支持啦 动态修改执行时间,尤其是cron

    12110

    玩转 Spring Boot 集成篇(任务动态管理代码篇)

    在日常项目研发,定时任务可谓是必不可少的一环,如果面对任务执行周期固定,业务简单的场景,可直接使用 Spring Boot 内置注解方式实现任务;而如果考虑更为复杂的管理任务信息,在可以通过集成 Quartz...本次主要分享一下 Spring Boot 集成 Quartz 任务框架后,如何实现任务的动态管理,更能够让研发人员专注业务任务的研发,那么就要逐一解决如下疑问。...        TaskInfo isExistData = taskInfoDao.selectByJobName(taskInfoReq.getJobName());         //当任务存在,则更改失败..., "表达式有误");         MSG.put(TASK_CRON_DOUBLE, "定时任务已经存在");     }     public static String getMsg...例行回顾 本文是 Spring Boot 项目集成 Quartz 来实现任务的动态管理,主要是代码,感兴趣的可以自行拿去验证改造并用于实践。

    64530

    玩转 Spring Boot 集成篇(任务动态管理代码篇)

    在日常项目研发,定时任务可谓是必不可少的一环,如果面对任务执行周期固定,业务简单的场景,可直接使用 Spring Boot 内置注解方式实现任务;而如果考虑更为复杂的管理任务信息,在可以通过集成 Quartz...本次主要分享一下 Spring Boot 集成 Quartz 任务框架后,如何实现任务的动态管理,更能够让研发人员专注业务任务的研发,那么就要逐一解决如下疑问。...TaskInfo isExistData = taskInfoDao.selectByJobName(taskInfoReq.getJobName()); //当任务存在,则更改失败..., "表达式有误"); MSG.put(TASK_CRON_DOUBLE, "定时任务已经存在"); } public static String getMsg(int...例行回顾 本文是 Spring Boot 项目集成 Quartz 来实现任务的动态管理,主要是代码,感兴趣的可以自行拿去验证改造并用于实践。

    2K42

    SpringBoot下使用定时任务的方式全揭秘

    本文旨在用通俗的语言讲述枯燥的知识 定时任务作为一种系统调度工具,在一些需要有定时作业的系统应用广泛,每逢某个时间点统计数据、在将来某个时刻执行某些动作...定时任务在主流开发语言均提供相应的API...文章提纲: 1、使用线程 2、使用Timer类 3、使用ScheduledExecutorService类 4、使用Quartz 5、使用spring的@Scheduled注解 6、cron表达式 1....") public void testCron(){ logger.info("Scheduled 执行一次定时任务"); } } 6. cron表达式 cron表达式是一个字符串其语法为...: [秒] [分] [小时] [日] [月] [周] [年] 其中[年]为非必填项,因此通常cron表达式通常由6或7部分内容组成,内容的取值为数字或者一些cron表达式约定的特殊字符,这些特殊字符称为...,代表表达式不关心是周几 - 区间 :时字段设置2-5,代表2,3,4,5点钟时都触发 , 多个值 :时字段设置2,3,5,代表2,3,5点都会触发 / 递增值 :时字段设置0/2,代表每两个小时触发

    47310

    使用Spring整合Quartz轻松完成定时任务

    --Cron表达式触发器--> 25 <bean id="cronTrigger" class="org.springframework.scheduling.<em>quartz</em>.CronTriggerFactoryBean...:只支持按照一定频度调用任务,<em>如</em>每隔30分钟运行一次.     ...org.springframework.scheduling.<em>quartz</em>.CronTriggerFactoryBean:支持到指定时间运行一次,<em>如</em>每天12:00运行一次等.     ...关于第二种触发器的<em>Cron</em><em>表达式</em>,请参见另一篇博客:摆脱Spring 定时任务的@Scheduled <em>cron</em><em>表达式</em>的困扰   3).org.springframework.scheduling.<em>quartz</em>.SchedulerFactoryBean...--<em>Cron</em><em>表达式</em>触发器--> 23 <bean id="cronTrigger" class="org.springframework.scheduling.<em>quartz</em>.CronTriggerFactoryBean

    39630

    Spring Boot几种定时任务的实现方式

    Quartz:这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂。 数据库,建一张表,表里存放 cron 表达式。...nacos,使用分布式配置实现动态配置 cron 表达式。 XXL-JOB,分布式定任务 使用Timer 这个目前在项目中用的较少,直接贴demo代码。...cron:通过表达式来配置任务执行时间 cron表达式详解 一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。.../ L C # 年(可选) 留空,1970~2099 , - * / 在线cron表达式生成:http://qqe2.com/cron/index 整合Quartz 添加依赖 如果Spring Boot...版本是2.0.0以后的,则在spring-boot-starter已经包含了quart的依赖,则可以直接使用spring-boot-starter-quartz依赖:

    57810

    基于Quartz的定时任务及crond表达式入门学习

    [TOC] 0x00 前言 0x01 基础语法 JavaQuartz Cron表达式(Cron Expressions—Cron 表达式)被用来配置CronTrigger实例,需要注意一点它不同于Linux...Cron表达式,我们从下面的格式可以看出区别; Cron表达式是一个由7个子表达式组成的字符串, 每个子表达式都描述了一个单独的日程细节并且采用空格分隔; #Linux crond 分钟 小时 天...月 周 Command * * * * * 命令执行 #Quartz Cron * * * * * * ?...QuartzCron表达式比LinuxCron表达式更为强大和精细; 特殊字符含义: , : 其表示一个列表(9,10,11,12) - : 其表示一个连续的区间(9-12) , 例如:子表达式...* WED #表示每个星期三午12点 注意事项: 1.在使用“L”参数时,不要指定列表或范围,因为这会导致问题

    72120
    领券