springboot 整合squartz 多任务调度配置

原创 2018年04月17日 13:04:26
package com.bbg.action;

import org.quartz.JobDetail;
import org.quartz.Trigger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;



@Configuration
public class QuartzConfigration {
	
	/** 
     * attention: 
     * Details:配置定时任务 
     */  
    @Bean(name = "jobDetail")  
    public MethodInvokingJobDetailFactoryBean  detailFactoryBean(ScheduleTask task) {// ScheduleTask为需要执行的任务  
        MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();  
        /* 
         *  是否并发执行 
         *  例如每5s执行一次任务,但是当前任务还没有执行完,就已经过了5s了, 
         *  如果此处为true,则下一个任务会执行,如果此处为false,则下一个任务会等待上一个任务执行完后,再开始执行 
         */  
        jobDetail.setConcurrent(false);  
          
        jobDetail.setName("srd-chhliu");// 设置任务的名字  
        jobDetail.setGroup("srd");// 设置任务的分组,这些属性都可以存储在数据库中,在多任务的时候使用  
          
        /* 
         * 为需要执行的实体类对应的对象 
         */  
        jobDetail.setTargetObject(task);  
          
        /* 
         * sayHello为需要执行的方法 
         * 通过这几个配置,告诉JobDetailFactoryBean我们需要执行定时执行ScheduleTask类中的sayHello方法 
         */  
        jobDetail.setTargetMethod("parseDTF");  
        return jobDetail;  
    }  
    
    @Bean(name = "pingJobDetail")  
    public MethodInvokingJobDetailFactoryBean  pingFactoryBean(ScheduleTask task) {// ScheduleTask为需要执行的任务  
        MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();  
        /* 
         *  是否并发执行 
         *  例如每5s执行一次任务,但是当前任务还没有执行完,就已经过了5s了, 
         *  如果此处为true,则下一个任务会执行,如果此处为false,则下一个任务会等待上一个任务执行完后,再开始执行 
         */  
        jobDetail.setConcurrent(false);  
          
        jobDetail.setName("ping-sch");// 设置任务的名字  
        jobDetail.setGroup("srd");// 设置任务的分组,这些属性都可以存储在数据库中,在多任务的时候使用  
          
        /* 
         * 为需要执行的实体类对应的对象 
         */  
        jobDetail.setTargetObject(task);  
          
        /* 
         * sayHello为需要执行的方法 
         * 通过这几个配置,告诉JobDetailFactoryBean我们需要执行定时执行ScheduleTask类中的sayHello方法 
         */  
        jobDetail.setTargetMethod("ping");  
        return jobDetail;  
    }  

    /** 
     * attention: 
     * Details:配置定时任务的触发器,也就是什么时候触发执行定时任务 
     */  
    @Bean(name = "jobTrigger")  
    public CronTriggerFactoryBean cronJobTrigger(JobDetail  jobDetail) {  
        CronTriggerFactoryBean tigger = new CronTriggerFactoryBean();  
        tigger.setJobDetail(jobDetail);  
        tigger.setCronExpression("*/5 * * * * ?");// 初始时的cron表达式  
        tigger.setName("srd-chhliu");// trigger的name  
        return tigger;  
  
    } 
    
    @Bean(name = "pingJobTrigger")  
    public CronTriggerFactoryBean pingJobTrigger(JobDetail  pingJobDetail) {  
        CronTriggerFactoryBean tigger = new CronTriggerFactoryBean();  
        tigger.setJobDetail(pingJobDetail);  
        tigger.setCronExpression("*/5 * * * * ?");// 初始时的cron表达式  
        tigger.setName("ping-sch");// trigger的name  
        return tigger;  
  
    } 
    
    
  
    /** 
     * attention: 
     * Details:定义quartz调度工厂 
     */  
    @Bean(name = "scheduler")  
    public SchedulerFactoryBean schedulerFactory(Trigger jobTrigger,Trigger pingJobTrigger) {  
        SchedulerFactoryBean bean = new SchedulerFactoryBean();  
        // 用于quartz集群,QuartzScheduler 启动时更新己存在的Job  
        bean.setOverwriteExistingJobs(true);  
        // 延时启动,应用启动1秒后  
        bean.setStartupDelay(1);  
        // 注册触发器  
        bean.setTriggers(jobTrigger,pingJobTrigger);
        return bean;  
    }  
 
}

ScheduleTask.class

package com.bbg.action;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.stereotype.Component;

@Component 
@EnableScheduling 
public class ScheduleTask {
	
	@Autowired
	private ParseDateToDbcj parseDateToDbcj;

	public void parseDTF(){
		System.out.println("parseDTF()");
		//parseDateToDbcj.excuteParseData();
	}
	
	public void ping(){  
		System.out.println("ping()");
		//parseDateToDbcj.executePing(); 
    } 

}

PingScheduleTask.class

package com.bbg.action;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.stereotype.Component;
 
@Component 
@EnableScheduling 
public class PingScheduleTask {
	
	@Autowired
	private ParseDateToDbcj parseDateToDbcj;
	
	public void ping(){  
		System.out.println("ping()");
		//parseDateToDbcj.executePing(); 
    } 
	
}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.bbg</groupId>
	<artifactId>BhbiDbJc</artifactId>
	<packaging>jar</packaging>
	<version>0.0.1-SNAPSHOT</version>

	<properties>
		<java.version>1.7</java.version>
	</properties>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.7.RELEASE</version>
	</parent>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc14</artifactId>
			<version>12.1.0.2</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
			<version>2.2.1</version>
			<exclusions>
				<exclusion>
					<artifactId>slf4j-api</artifactId>
					<groupId>org.slf4j</groupId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency><!-- 该依赖必加,里面有sping对schedule的支持 -->
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
		</dependency>

	</dependencies>


	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

springboot整合quartz配置多任务

看了另外一个篇在springboot中使用java类配置quartz的博客, 但是没有多任务的配置。 在这里写一个配置quartz多任务的demo, 使用两个任务, 使用SimpleTrigger和C...
  • wk52525
  • wk52525
  • 2018-01-18 21:51:43
  • 594

springboot quartz 多任务整合

最近在做定时任务, 参考了一下这位老兄的文章 http://blog.csdn.net/liuchuanhong1/article/details/60873295 接下来遇到一个问题, 就是多任...
  • yztzz
  • yztzz
  • 2017-11-18 18:19:50
  • 1012

springBoot整合quartz(多任务)

配置文件****************************** sync:   organization:     cron: 0 0 0/1 * * ? quartz:   enabled: ...
  • weixin_37282399
  • weixin_37282399
  • 2017-09-04 09:53:06
  • 226

springBoot 集成 Quartz任务调度

由于项目使用spring-boot框架,其框架是为了实现零配置文件去做开发的理念,所以在项目中集成Quartz任务调度并不像spring那样直接配置XML...
  • u010623907
  • u010623907
  • 2015-06-29 17:20:23
  • 22574

spring boot多任务配置

@SpringBootApplication @EnableScheduling public class Application { public static void main(S...
  • shuist_king
  • shuist_king
  • 2017-04-06 16:58:53
  • 1443

springboot集成quartz配置多个job任务

1、pom配置 org.springframework spring-context-support org.quartz-scheduler ...
  • xc765926174
  • xc765926174
  • 2016-12-15 11:32:57
  • 3934

springboot整合Quartz实现动态配置定时任务

前言 在我们日常的开发中,很多时候,定时任务都不是写死的,而是写到数据库中,从而实现定时任务的动态配置,下面就通过一个简单的示例,来实现这个功能。 一、新建一个springboot工程,并添加依赖 ...
  • liuchuanhong1
  • liuchuanhong1
  • 2017-03-09 09:12:20
  • 37897

Spring整合Quartz实现定时任务调度

一. 核心类 1. Job: 表示一个工作, 具体的业务处理都在这里. 2. JobDetail: 表示一个具体的可执行的调度程序. 3. Trigger: 用于调度参数的配置(什么时候去调用J...
  • zdp072
  • zdp072
  • 2014-08-16 23:43:28
  • 1911

SpringBoot quartz 后台定时任务可配置

  • 2017年12月08日 14:37
  • 49B
  • 下载

springboot整合quartz实现定时任务

在做项目时有时候会有定时器任务的功能,比如某某时间应该做什么,多少秒应该怎么样之类的。 spring支持多种定时任务的实现。我们来介绍下使用spring的定时器和使用quartz定时器   1.我...
  • chenxiruanhai
  • chenxiruanhai
  • 2015-01-12 00:22:36
  • 1121
收藏助手
不良信息举报
您举报文章:springboot 整合squartz 多任务调度配置
举报原因:
原因补充:

(最多只允许输入30个字)