首页 > 其他分享 >【Quartz】SchedulerFactoryBean::setDataSource小记

【Quartz】SchedulerFactoryBean::setDataSource小记

时间:2024-05-13 21:20:28浏览次数:12  
标签:Quartz jobTrigger factory setDataSource scheduler SchedulerFactoryBean

背景

使用Quartz配置

@Configuration
public class QuartzConfig {

    @Bean
    public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource) {
        SchedulerFactoryBean factory = new SchedulerFactoryBean();
        factory.setDataSource(dataSource);
        factory.setOverwriteExistingJobs(true); // 允许覆盖已存在的任务
        return factory;
    }
}

注入

@Resouce
Scheduler scheduler;

更新任务提示ClassNotFound

Class<? extends Job> jobClazz = (Class<? extends Job>) Class.forName("com.onejay.service.ClassA");

JobDetail jobDetail = JobBuilder.newJob(jobClazz)
        .withIdentity(jobIdentity, jobGroupName)
        .build();

        if (!scheduler.checkExists(jobDetail.getKey())) {
        // 新增任务
        scheduler.scheduleJob(jobDetail, jobTrigger);
} else {
        // 更新任务
        scheduler.rescheduleJob(jobTrigger.getKey(), jobTrigger);
}

原因

SchedulerFactoryBean的配置时如果调用了setDataSource方法,那么Quartz会自动在数据库中创建一个Quartz表,并且记录一个定时器。

如果JobClass的路径改变了,且与Quartz表中记录的定时器类路径不一致,那么就会提示找不到。

解决办法

不再使用setDataSource

或者

修改Quartz表中的类路径

 

标签:Quartz,jobTrigger,factory,setDataSource,scheduler,SchedulerFactoryBean
From: https://www.cnblogs.com/onejay/p/18186777

相关文章

  • 08_Quartz.NET使用
    Quartz.NET是一个用于调度任务和作业的开源框架,它允许开发人员创建简单或复杂的调度方案,例如定时执行任务,定时触发作业等。创建调度器很简单需要三个对象: IScheduler、IJob、ITrigger,直接上代码,使用可根据需求再扩展usingQuartz;usingQuartz.Impl;usingQuartzScheduler......
  • c# 实现Quartz任务调度
    使用Quartz.NET,你可以很容易地安排任务在应用程序启动时运行,或者每天、每周、每月的特定时间运行,甚至可以基于更复杂的调度规则。官网:http://www.quartz-scheduler.net/实现任务类创建一个实现了IJob接口的类(MailJobTest),该接口包含一个Execute方法,该方法将在作业运行时......
  • Java Tomcat7中使用Quartz2.2实现定时任务项目代码实例(demo)
    ​ 在Java中使用Quartz2.2结合Tomcat7实现定时任务是一种常见的需求,Quartz是一个强大的定时任务库,能够帮助开发者轻松实现复杂的定时任务调度。以下是一个简单的示例,展示如何在JavaWeb应用中集成Quartz来执行定时任务。 详细文档:JavaTomcat7中使用Quartz2.2实现定时任务......
  • 【故障排查】10分钟解决Quartz重复调度的疑难杂症
    我司使用ApacheDolphinScheduler作为调度框架很久了,感兴趣的小伙伴可以看看这些干货文章:因为之前监控到会出现重复的调度的问题,所以此文记录排查重复调度问题的全过程,希望对社区其他的小伙伴能够起到抛砖引玉的作用!注:本文使用的DolphinScheduler3.1.1的版本。数据库使用的Ti......
  • XQuartz 使用方法
    XQuartz就是macOS下的X11,部分Linux程序安装时需使用到图形界面,可以选择这个解决方案。安装:brewinstall--caskxquartz安装之后,在终端输入xquartz应该就能启动XQuartz:xquartz启动之后没有什么效果,只是能从程序坞看到有程序被打开了。此时打开一个新的终端页面,输......
  • asp.net quartz 定时器 miniapi sqlite数据库 cors
    dotnet_miniapi_quartz_ipaddress_check/Dtos.csusingSystem.ComponentModel.DataAnnotations;namespaceGameStore.Api.Dtos;publicrecordIpAddressDto(Guidid,stringip,stringname,stringdomain,......
  • Quartz实现定时job
    staticvoidMain(string[]args){Task<IScheduler>tsk=StdSchedulerFactory.GetDefaultScheduler();ISchedulerScheduler=tsk.Result;IJobDetailJobDetail=JobBuilder.Create<Job>().WithIdentity("完成").Build();IT......
  • SpringBoot整合Quartz实现动态定时任务
    1、增加依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency><!--json工具--><dependency><groupId>com.alibaba</gro......
  • Quartz.net启动后不立即执行
    Quartz.net启动后不立即执行看了好多帖子说加这一句,多番尝试后还是立即执行了。((CronTriggerImpl)jobTrigger).MisfireInstruction=MisfireInstruction.CronTrigger.DoNothing; 经过测试后,还需要加一行代码:_scheduler.ResumeTrigger(jobTrigger.Key).Wait(); 完整......
  • 精通Quartz:Java中的时间管理与任务调度专家
    Quartz,一个在Java应用中无可替代的时间管理与任务调度库,以其独特的功能和灵活性广受开发者青睐。得名于“石英”,Quartz不仅象征着时间的精确性,也体现了其在任务调度领域的核心地位。本文将深入剖析Quartz的内部工作原理和最佳实践,帮助开发者更好地理解和运用这一强大的库。Quartz......