最近收到了很多封邮件,都是想知道spring boot整合quartz如何实现多个定时任务的,由于本人生产上并没有使用到多个定时任务,这里给个实现的思路。

1、新建两个定时任务,如下:

public class ScheduledJob implements Job{

@Override

public void execute(JobExecutionContext context) throws JobExecutionException {

System.out.println("schedule job1 is running…………………………………… ");

}

}

public class ScheduledJob2 implements Job {

@Override

public void execute(JobExecutionContext context) throws JobExecutionException {

System.out.println("schedule job2 is running ……………………………………………………");

}

}

2、配置以上两个任务

@Component

public class SchedulerAllJob {

@Autowired

private SchedulerFactoryBean schedulerFactoryBean;

/*

* 此处可以注入数据库操作,查询出所有的任务配置

*/

/**

* 该方法用来启动所有的定时任务

* @throws SchedulerException

*/

public void scheduleJobs() throws SchedulerException {

Scheduler scheduler = schedulerFactoryBean.getScheduler();

/**

*

*/

scheduleJob1(scheduler);

scheduleJob2(scheduler);

}

/**

* 配置Job1

* 此处的任务可以配置可以放到properties或者是放到数据库中

* 如果此时需要做到动态的定时任务,请参考:http://blog.csdn.net/liuchuanhong1/article/details/60873295

* 博客中的ScheduleRefreshDatabase类

* @param scheduler

* @throws SchedulerException

*/

private void scheduleJob1(Scheduler scheduler) throws SchedulerException{

/*

* 此处可以先通过任务名查询数据库,如果数据库中存在该任务,则按照ScheduleRefreshDatabase类中的方法,更新任务的配置以及触发器

* 如果此时数据库中没有查询到该任务,则按照下面的步骤新建一个任务,并配置初始化的参数,并将配置存到数据库中

*/

JobDetail jobDetail = JobBuilder.newJob(ScheduledJob.class) .withIdentity("job1", "group1").build();

// 每5s执行一次

CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");

CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1") .withSchedule(scheduleBuilder).build();

scheduler.scheduleJob(jobDetail,cronTrigger);

}

/**

* 配置Job

* @param scheduler

* @throws SchedulerException

*/

private void scheduleJob2(Scheduler scheduler) throws SchedulerException{

JobDetail jobDetail = JobBuilder.newJob(ScheduledJob2.class) .withIdentity("job2", "group1").build();

CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/10 * * * * ?");

// 每10s执行一次

CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("trigger2", "group1") .withSchedule(scheduleBuilder).build();

scheduler.scheduleJob(jobDetail,cronTrigger);

}

}

3、启动两个任务

@Configuration

@EnableScheduling

@Component

public class SchedulerListener {

@Autowired

public SchedulerAllJob myScheduler;

/**

* 启动的时候执行该方法,或者是使用ApplicationListener,在启动的时候执行该方法

* 具体使用见:http://blog.csdn.net/liuchuanhong1/article/details/77568187

* @throws SchedulerException

*/

@Scheduled(cron="0 08 18 ? * *")

public void schedule() throws SchedulerException {

myScheduler.scheduleJobs();

}

@Bean

public SchedulerFactoryBean schedulerFactoryBean(){

SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();

return schedulerFactoryBean;

}

}

4、测试结果如下

schedule job1 is running……………………………………

schedule job2 is running ……………………………………………………

schedule job1 is running……………………………………

schedule job1 is running……………………………………

schedule job2 is running ……………………………………………………

schedule job1 is running……………………………………

schedule job1 is running……………………………………

schedule job2 is running ……………………………………………………

schedule job1 is running……………………………………

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

quartz 两个java_spring boot整合quartz实现多个定时任务的方法相关推荐

  1. rabbitmq fanout java_spring boot整合RabbitMQ实例详解(Fanout模式)

    1.Fanout Exchange介绍 Fanout Exchange 消息广播的模式,不管路由键或者是路由模式,会把消息发给绑定给它的全部队列,如果配置了routing_key会被忽略. 如上图所示 ...

  2. Spring Boot 整合 Quartz 实现 Java 定时任务的动态配置

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 首先说下这次主题,动态配置.没接触过定时任务的同学可以先看 ...

  3. spring boot整合Quartz 在Job类中注入其他对象报空指针异常java.lang.NullPointerException at com.sxt.quartz.QuartzDemo.e

    情况在Job 类中注入RedisTemplate 报空指针异常 原因:我们使用JobDetailFactoryBean 帮我们创建对象 实际上调用的是AdaptableJobFactory 下的这个方 ...

  4. rabbitmq fanout java_spring boot整合RabbitMQ(Fanout模式)

    1.Fanout Exchange介绍 Fanout Exchange 消息广播的模式,不管路由键或者是路由模式,会把消息发给绑定给它的全部队列,如果配置了routing_key会被忽略. 如上图所示 ...

  5. Spring Boot定时任务-SpringBoot整合Quartz

    如何通过SpringBoot整合Quartz框架,我们首先去创建一个项目,接下来我们需要在pom文件里添加坐标,我们在使用SpringBoot整合Quartz的时候,需要添加哪些坐标呢,我们来看一下, ...

  6. Spring Boot 2.x整合Quartz

    宣传官网 xb.exrick.cn 在线Demo xboot.exrick.cn 开源版Github地址 github.com/Exrick/x-bo- 开发文档 www.kancloud.cn/ex ...

  7. jfinal整合quartz实现定时任务的两种方式

    第一种实现方式 1.导入包 <dependency>             <groupId>org.quartz-scheduler</groupId>    ...

  8. Spring Boot 集成Quartz

    1:在项目的pom文件添加quartz依赖 <!-- quartz定时任务 --> <dependency><groupId>org.springframework ...

  9. Java-Quartz实现定时任务(SpringBoot整合quartz)

    Quartz简介 Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单 ...

最新文章

  1. 一款基于jquery和css3的头像恶搞特效
  2. 遍历List 删除某条数据
  3. [C1W3] Neural Networks and Deep Learning - Shallow neural networks
  4. Linux JDK升级
  5. python 重定向 ctf_3.CTF——python利用工具
  6. mysql5.7.11无法启动_macos - mysql 5.7.11 启动报错
  7. android spp协议,Android蓝牙开发SPP协议通信
  8. linux 安装onos 记录
  9. .net Remoting与Web Service的比较
  10. 【嵌入式工具】Keil下载,安装,配置教程大全
  11. 水经注全国离线地图都有哪些地图数据?
  12. 免费的思维导图工具推荐(幕布-ProcessOn)2020年最新测评
  13. javascript实现有序map
  14. cif t t操作流程图_cif流程(cif贸易术语流程图)
  15. mysql数据库select语句用法_mysql学习笔记之完整的select语句用法实例详解
  16. HackTheBox-Chase
  17. 与任何手机无线同步/共享您的音乐收藏
  18. 2022办公企业邮箱申请流程,总结申请公司电子邮箱的步骤是什么?
  19. stm32F072 USB内部上拉电阻软件控制不了
  20. 服务器维护玩穿越火线,为什么我玩穿越火线进不去 三招助你轻松进入游戏

热门文章

  1. with(nolock)的用法
  2. intellij idea 如何一键清除所有断点
  3. CentOS 6.2下log4cplus的使用
  4. cv2.matchTemplate()函数的应用,匹配图片后画出矩形
  5. golang 基础知识4
  6. JavaWeb编程(十)Json语句
  7. Swift_类型选择
  8. Oracle sql语句执行过程图文分析
  9. 生日QQ配对【找到你生日QQ了吗?】
  10. Java ExecutorService四种线程池的例子与说明