springboot quartz 使用数据源 重启项目无法修改已有任务触发时间

1.问题如标题所说

使用springboot + quartz + cron表达式形式触发任务 + mysql jdbc 数据源
出现的问题是 重启服务时无法修改数据库已有任务的cron表达式也就是任务触发频率无法修改

2.解决方案

1.增加yml配置项

需要在yml 中添加如下语句即可

spring:
  quartz:
    overwrite-existing-jobs: true # 是否覆盖已有 Job 的配置

2. 增加处理类

在项目代码中增加如下类 本质类似都是通过修改bean的overwirteexistingjobs属性进行覆盖
看注解能知道是在bean配置后自动调用该方法修改 其实代码中如果想要手动修改定时任务应该通过scheduler.rescheduleJob就可以进行修改 但是需要获取到scheduler

@Configuration
@AutoConfigureAfter(QuartzAutoConfiguration.class)
public class QuartzSupportConfig{
   
   

    @Autowired(required = false)
    private List<Trigger> triggers ;

    @Autowired
    SchedulerFactoryBean schedulerFactoryBean;

    @PostConstruct
    public void quartzScheduler() throws SchedulerException {
   
   
        schedulerFactoryBean.setOverwriteExistingJobs(true);
        if (triggers != null){
   
   
            Scheduler scheduler = schedulerFactoryBean.getScheduler();
            for (Trigger trigger : triggers){
   
   
                scheduler.rescheduleJob(trigger.getKey(),trigger);
            }
        }
    }

}

3. 问题

1.尝试通过手动注入schedulerFactory 进行修改已有trigger 但是始终无法在启动服务时获取到数据库已有trigger

相关代码如下:(这个是错误代码哈 如果有大佬发现问题感谢指出)


@Configuration
public class UserSchedulerConfig {
   
   
    //这里用了两个数据源  这个使用了分片 但是定时任务使用的铍铜任务
    @Lazy
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值