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



目录
相关文章
|
存储 JSON 安全
Python中数据类转换为JSON的方法
Python中数据类转换为JSON的方法
375 0
|
存储 负载均衡 中间件
云计算——云计算服务类型
云计算——云计算服务类型
2640 0
|
10月前
|
存储 网络协议 算法
【C语言】进制转换无难事:二进制、十进制、八进制与十六进制的全解析与实例
进制转换是计算机编程中常见的操作。在C语言中,了解如何在不同进制之间转换数据对于处理和显示数据非常重要。本文将详细介绍如何在二进制、十进制、八进制和十六进制之间进行转换。
929 5
|
6月前
|
边缘计算 网络协议 安全
DDoS攻击:网络世界的“洪峰考验”与应对逻辑
本文介绍了DDoS攻击的运行机制及其影响,并提供了多层次的防御策略。DDoS攻击通过海量流量使目标服务器过载,造成服务中断,对电商和在线平台带来巨大经济损失与用户信任危机。防御措施包括基础设施优化、流量调度及云端协同防护等技术手段。针对中小企业,推荐使用如非凡云提供的弹性防护方案,含200G免费DDoS防御与自动带宽扩容功能,有效降低攻击风险和技术门槛。
627 0
DDoS攻击:网络世界的“洪峰考验”与应对逻辑
|
12月前
|
网络性能优化 数据安全/隐私保护
什么是国际专线网络?国际专线网络的特点
国际专线网络是连接不同国家和地区的专用通信线路,提供高速、可靠的数据传输服务。它具备高带宽、专用通道、高安全性、广泛覆盖和服务质量保障等优点,适用于跨国企业和组织的高效通信需求。然而,其建设和维护成本较高,需综合考虑。
825 3
|
9月前
|
存储 缓存 监控
社交软件红包技术解密(四):微信红包系统是如何应对高并发的
本文将为读者介绍微信百亿级别红包背后的高并发设计实践,内容包括微信红包系统的技术难点、解决高并发问题通常使用的方案,以及微信红包系统的所采用高并发解决方案。
260 13
|
机器学习/深度学习 人工智能 数据安全/隐私保护
探索iOS开发的未来趋势
【5月更文挑战第31天】本文深入探讨了iOS开发领域的最新动态与未来展望。随着技术的不断进步,iOS开发者面临着前所未有的机遇与挑战。文章将分析当前iOS开发的关键技术点,并预测未来的发展方向,为开发者提供宝贵的参考信息。
|
12月前
|
Java 索引
Java“ArrayIndexOutOfBoundsException”解决
Java中的“ArrayIndexOutOfBoundsException”异常通常发生在尝试访问数组的无效索引时。解决方法包括:检查数组边界,确保索引值在有效范围内;使用循环时注意终止条件;对用户输入进行验证。通过这些措施可以有效避免该异常。
2246 2
|
负载均衡 网络协议 Cloud Native
CentOS环境下安装Nacos
Centos安装Nacos完成入门的学习和开发任务
1572 0
CentOS环境下安装Nacos