spring boot整合quartz实现多个定时任务的方法

最近收到了很多封邮件,都是想知道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……………………………………  

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

您可能感兴趣的文章:

  • SpringBoot定时任务两种(Spring Schedule 与 Quartz 整合 )实现方法
  • springboot整合quartz实现定时任务示例
  • springboot整合Quartz实现动态配置定时任务的方法
(0)

相关推荐

  • springboot整合Quartz实现动态配置定时任务的方法

    前言 在我们日常的开发中,很多时候,定时任务都不是写死的,而是写到数据库中,从而实现定时任务的动态配置,下面就通过一个简单的示例,来实现这个功能. 一.新建一个springboot工程,并添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency

  • springboot整合quartz实现定时任务示例

    在做项目时有时候会有定时器任务的功能,比如某某时间应该做什么,多少秒应该怎么样之类的. spring支持多种定时任务的实现.我们来介绍下使用spring的定时器和使用quartz定时器 1.我们使用spring-boot作为基础框架,其理念为零配置文件,所有的配置都是基于注解和暴露bean的方式. 2.使用spring的定时器: spring自带支持定时器的任务实现.其可通过简单配置来使用到简单的定时任务. @Component @Configurable @EnableScheduling p

  • SpringBoot定时任务两种(Spring Schedule 与 Quartz 整合 )实现方法

    前言 最近在项目中使用到定时任务,之前一直都是使用Quartz 来实现,最近看Spring 基础发现其实Spring 提供 Spring Schedule 可以帮助我们实现简单的定时任务功能. 下面说一下两种方式在Spring Boot 项目中的使用. Spring Schedule 实现定时任务 Spring Schedule 实现定时任务有两种方式 1. 使用XML配置定时任务, 2. 使用 @Scheduled 注解. 因为是Spring Boot 项目 可能尽量避免使用XML配置的形式,

  • spring boot整合quartz实现多个定时任务的方法

    最近收到了很多封邮件,都是想知道spring boot整合quartz如何实现多个定时任务的,由于本人生产上并没有使用到多个定时任务,这里给个实现的思路. 1.新建两个定时任务,如下: public class ScheduledJob implements Job{ @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("sched

  • Spring Boot 整合mybatis 使用多数据源的实现方法

    前言 本篇教程偏向实战,程序猿直接copy代码加入到自己的项目中做简单的修修改改便可使用,而对于springboot以及mybatis不在此进行展开介绍,如有读者希望了解可以给我留言,并持续关注,我后续会慢慢更新.(黑色区域代码部分,安卓手机可手动向左滑动,来查看全部代码) 整合 其实整合很简单,如果是用gradle的话,在build.gradle文件里加入 compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1')

  • Spring Boot整合JPA使用多个数据源的方法步骤

    介绍 JPA(Java Persistence API)Java 持久化 API,是 Java 持久化的标准规范,Hibernate 是持久化规范的技术实现,而 Spring Data JPA 是在 Hibernate 基础上封装的一款框架. 第一次使用 Spring JPA 的时候,感觉这东西简直就是神器,几乎不需要写什么关于数据库访问的代码一个基本的 CURD 的功能就出来了.在这篇文章中,我们将介绍 Spring Boot 整合 JPA 使用多个数据源的方法. 开发环境: Spring B

  • spring boot整合jsp及设置启动页面的方法

    前言 这几天在集中学习Spring boot+Shiro框架,因为之前view层用jsp比较多,所以想在spring boot中配置jsp,但是spring boot官方不推荐使用jsp,因为jsp相对于一些模板引擎,性能都比较低,官方推荐使用thymeleaf,但是Spring boot整合jsp的过程已经完成,在这里记录一下. 本文基于springboot2.0.4最新版本 spring官方推荐Thymeleaf但是还是有很多javaweb朋友习惯使用jsp虽然现在jsp有点out.本节教程

  • Spring Boot整合ElasticSearch实现多版本兼容的方法详解

    前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和SpringBoot进行结合使用. ElasticSearch介绍 ElasticSearch是一个基于Lucene的搜索服务器,其实就是对Lucene进行封装,提供了 REST API 的操作接口 ElasticSearch作为一个高度可拓展的开源全文搜索和分析引擎,可用于快速地对大数据进行存储,搜索和分析.

  • Spring Boot 配置 Quartz 定时任务的方法

    Quartz有四个核心概念: Job:是一个接口,只定义一个方法 execute(JobExecutionContext context),在实现接口的 execute 方法中编写所需要定时执行的 Job(任务) Double slongitude = Double.valueOf(jobExecutionContext.getJobDetail().getJobDataMap().get("slongitude").toString()); JobDetail:Quartz 每次调度

  • 浅谈Spring Boot 整合ActiveMQ的过程

    RabbitMQ是比较常用的AMQP实现,这篇文章是一个简单的Spring boot整合RabbitMQ的教程. 安装ActiveMQ服务器,(也可以不安装,如果不安装,会使用内存mq) 构建Spring boot项目,增加依赖项,只需要添加这一项即可 <!-- 添加acitivemq依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring

  • Spring Boot整合MybatisPlus逆向工程(MySQL/PostgreSQL)

    目录 一.创建表 二.创建Spring Boot工程 三.引入逆向工程依赖 四.代码中完成逆向工程配置 五.测试 MyBatis-Plus是MyBatis的增强工具,Generator通过MyBatis-Plus快速生成Entity.Mapper.Mapper XML.Service.Controller等模块的代码,方便快捷. 一.创建表 我们先创建数据库表:sys_log.sys_user CREATE TABLE `sys_log` ( `id` bigint(20) NOT NULL A

  • Spring Boot整合阿里开源中间件Canal实现数据增量同步

    目录 前言 Canal是什么? Canal数据如何传输? 数据同步还有其他中间件吗? Canal服务端安装 1.打开MySQL的binlog日志 2.设置MySQL的配置 3.设置RabbitMQ的配置 4.RabbitMQ新建exchange和Queue 5.启动服务端 6.测试 Canal客户端搭建 1.创建消息实体类 2.MQ消息监听业务 3.测试 总结 前言 数据同步一直是一个令人头疼的问题.在业务量小,场景不多,数据量不大的情况下我们可能会选择在项目中直接写一些定时任务手动处理数据,例

随机推荐