bboss quartz定时任务使用案例介绍

简介: bboss quartz定时任务使用案例介绍 本文demo gradle工程源码地址: https://github.com/bbossgroups/quartzdemo 1.导入bboss quartz maven坐标 com.bbossgroups bboss-schedule 5.0.3.5 gradle坐标 compile 'com.bbossgroups:bboss-schedule:5.0.3.5' bboss 整合quartz版本为quartz 2.3.0。
bboss quartz定时任务使用案例介绍
本文demo gradle工程源码地址:
https://github.com/bbossgroups/quartzdemo

1.导入bboss quartz

maven坐标
<dependency>
    <groupId>com.bbossgroups</groupId>
    <artifactId>bboss-schedule</artifactId>
    <version>5.0.3.5</version>
</dependency>


gradle坐标
compile 'com.bbossgroups:bboss-schedule:5.0.3.5'

bboss 整合quartz版本为 quartz 2.3.0

2.定义作业处理任务
package org.frameworkset.quartz.job;


/**
 * 定时任务实现类
 */
public class DemoJob {
    /**
     * 定时任务需要依赖的参数
     */
    private String jobParam ;
    private String jobParam1;
    /**
     * 定时任务方法
     */
    public void jobmethod(){
        System.out.println("execute job method:jobParam="+jobParam+",jobParam1="+jobParam);

    }
}


定时任务配置
在bboss quartz任务配置文件org/frameworkset/task/quarts-task.xml中添加定时任务:
<!-- 
	任务调度
-->
<properties>
	<!--<config file="elastic.properties"/>-->
	<!--quartz引擎配置参数,参考quartz官方配置文档
         
	http://www.quartz-scheduler.org/documentation/quartz-2.2.x/configuration/
第一部分	
-->
	<property name="quartz.config">
		<map>
			<property name="org.quartz.scheduler.instanceName" value="DefaultQuartzScheduler111" />
			<property name="org.quartz.scheduler.rmi.export" value="false" />
			<property name="org.quartz.scheduler.rmi.proxy" value="false" />
			<property name="org.quartz.scheduler.wrapJobExecutionInUserTransaction" value="false" />
			<property name="org.quartz.threadPool.class" value="org.quartz.simpl.SimpleThreadPool" />
			<property name="org.quartz.threadPool.threadCount" value="10" />
			<property name="org.quartz.threadPool.threadPriority" value="5" />
			<property name="org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread" value="true" />
			<property name="org.quartz.jobStore.misfireThreshold" value="6000" />
			<property name="org.quartz.jobStore.class" value="org.quartz.simpl.RAMJobStore" />
		</map>
		<!-- for cluster -->
		
	</property>
<!--第二部分-->
	<property name="taskconfig" enable="true">
		<list>
			<property name="定时任务执行器" taskid="default"
				class="org.frameworkset.task.DefaultScheduleService" used="true">
				<!--
					可执行的任务项
					属性说明:
					name:任务项名称
					id:任务项标识
					action:具体的任务执行处理程序,实现org.frameworkset.task.Execute接口
					cron_time:	cron格式的时间表达式,用来管理任务执行的生命周期,相关的规则请参照日期管理控件quartz的说明文档
					基本格式 : [参数间必须使用空格隔开]
					*  *  *  *  *  command
					分 时 日 月 周 命令

					第1列表示分钟1~59 每分钟用*或者 */1表示
					第2列表示小时1~23(0表示0点)
					第3列表示日期1~31
					第4列表示月份1~12
					第5列标识号星期0~6(0表示星期天)
					第6列要运行的命令
					shouldRecover:集群环境下属性必须设置为 true,当Quartz服务被中止后,再次启动或集群中其他机器接手任务时会尝试恢复执行之前未完成的所有任务。
					used 是否使用
					true 加载,缺省值
					false 不加载	  
					子元素说明:
					parameter:设置任务执行的参数,name标识参数名称,value指定参数的值
				-->
				<list>
					<!--配置定时任务-->
					<property name="quartzjobdemo" jobid="quartzjobdemo"
							  bean-name="quartzjobdemo"
							  method="jobmethod"
						cronb_time="0/1 * * * * ?" used="true"
						shouldRecover="false"
						/>
				</list>
			</property>
		</list>
	</property>

	<property name="quartzjobdemo" class="org.frameworkset.quartz.job.DemoJob"
			  f:jobParam="asdff"
			  f:jobParam1="dddd"
			  />
	

</properties>

配置说明
配置文件中包含两部分:
第一部分 quartz引擎参数配置,这里不做具体介绍,可以参考文档:
http://yin-bp.iteye.com/category/333270
第二部分 作业配置,可以定义多个作业,这里配置了quartzjobdemo一个作业:
<property name="quartzjobdemo" jobid="quartzjobdemo"
  bean-name="quartzjobdemo"
  method="jobmethod"
cronb_time="0/1 * * * * ?" used="true"
shouldRecover="false"
/>

name和jobid是作业标识,有含义和保证唯一性就行,bean-name指定了作业任务实现类的bboss ioc组件名称,methd指定了作业的方法名称,cronb_time指定了作业cron触发时间点,这里是每秒执行一次作业方法:
0/1 * * * * ?

作业组件定义部分,bboss ioc配置参考文档:
http://yin-bp.iteye.com/blog/1434626
<property name="quartzjobdemo" class="org.frameworkset.quartz.job.DemoJob"
			  f:jobParam="asdff"
			  f:jobParam1="dddd"
			  />


3.调试作业任务
调试作业任务,在工程中新建一个带main方法的测试类,然后再idea或者eclipse中run和debug即可:
import org.frameworkset.task.TaskService;

/**
 * 调试作业任务
 */
public class TestTask {
    public static void main(String[] args){
        /**
         * 启动quartz作业引擎
         */
        TaskService.getTaskService().startService();

    }
}

4.发布独立运行的版本
编写一个启动类:
org.frameworkset.quartz.job.Main
package org.frameworkset.quartz.job;

import org.frameworkset.task.TaskService;

/**
 * bboss微服务主程序
 */
public class Main {
    public static void main(String[] args){
        //启动定时任务quartz引擎
        TaskService.getTaskService().startService();
    }
}

配置入口类-runfiles/config.properties:
#工具主程序
mainclass=org.frameworkset.quartz.job.Main

img_c39a406f164725d461c47c621169bfdc.png


基于gradle发布作业版本
在命令行运行指令:
gradle releaseVersion
img_88522127c9cce15855785e3956761183.png
也可以在idea中发布版本:
img_4f64537f0bca8e318cb58ea6e911a97a.png

版本发布成功后,在工程的build目录下会生成一个可运行的包,启动作业:
linux :执行startup.sh
windowd:执行startup.bat

以windows为例:

img_89918c0628352db842a5dad3d1f63e9d.png
运行结果:

img_79e2949d1851fab2718bb2a375ffbde1.png

一个更具体的bboss quartz应用项目:
elasticsearch历史数据清理作业
https://github.com/bbossgroups/elktask



目录
相关文章
|
4月前
|
监控 安全 调度
JFinal如何实现定时任务
JFinal如何实现定时任务
132 0
|
存储 Java
SpringBoot自动配置原理解析(三)
SpringBoot自动配置原理解析(三)
67 0
SpringBoot自动配置原理解析(三)
|
6月前
|
XML Java 数据格式
【springboot原理篇】Bean的加载方式,面试必看
【springboot原理篇】Bean的加载方式,面试必看
223 0
|
Java
SpringBoot自动配置原理解析(四)
SpringBoot自动配置原理解析(四)
64 1
|
6月前
|
Java
SpringBoot自动配置原理解析(五)
SpringBoot自动配置原理解析(五)
40 0
|
11月前
|
数据采集 运维 Java
bboss
bboss
57 0
|
NoSQL Java Redis
SpringBoot自动配置原理解析(一)
SpringBoot自动配置原理解析(一)
83 0
|
XML JSON Java
SpringBoot支持的配置文件及执行顺序
SpringBoot支持的配置文件及执行顺序
298 0
|
存储 数据可视化 Java
SpringBoot实现quartz定时任务可视化管理
在实际框架或产品开发过程中,springboot中集成quarzt方式基本是以job和trigger的bean对象方式直接硬编码完成的,例如以下代码示例。对于系统内定义的所有定时任务类型,具体执行类,执行策略,运行状态都没有一个动态全局的管理,所有决定将quartz做成可视化配置管理,便于统一管理,也降低了使用门槛,只需要关心job类的实现即可
281 0
|
Java 数据库 容器
简单详细的SpringBoot自动配置原理解析
上一篇文章我们介绍了SpringFactoriesLoader,之所以介绍SpringFactoriesLoader是因为我们这篇文章要介绍的SpringBoot的自动配置会用到SpringFactoriesLoader的知识。闲话少叙,让我们直入主题。
225 0
简单详细的SpringBoot自动配置原理解析
下一篇
无影云桌面