quartz通过动态设置读取配置文件,有时排查问题需要重新执行定时任务,因为重启一次服务器所需的成本太多。
这时,就需要我们仅仅修改数据库就能实现动态的更新定时任务的定时时间。
但仅仅修改表qrtz_cron_triggers对应cronExpression并不能生效,原因在于表qrtz_triggers中的所有时间相关的值并没有变动。
1.更改表qrtz_cron_triggers的cronExpression(定时任务时间)
例子:
update QRTZ_CRON_TRIGGERS set CRON_EXPRESSION='0 */1 * * * ?' where TRIGGER_NAME='oidcRotationCiperTriggerBean';
2.将表qrtz_triggers的NEXT_FIRE_TIME(下一次执行时间)和PREV_FIRE_TIME(上一次执行时间)的值改为0
例子:
update QRTZ_TRIGGERS set NEXT_FIRE_TIME=0,PREV_FIRE_TIME=0 where TRIGGER_NAME='oidcRotationCiperTriggerBean';
友情提示:使用此法则不能实现配置文件同数据库的同步,重启后会读取配置文件的设置。