FastChar-Job
大约 2 分钟
FastChar-Job
介绍
快速对接quartz插件。
使用
引入工具包
开发者需要集成FastChar-OSS Github的工具包。以maven项目为例,在pom.xml中加入如下引用:
<dependency>
<groupId>com.fastchar</groupId>
<artifactId>fastchar-job</artifactId>
<version>1.6.1</version>
</dependency>
配置quartz
FastChar-Job在配置quartz时做了较大的改动,不再使用配置文件进行配置,而是在代码中进行配置,如下:
public class FastCharTestWeb implements IFastWeb {
/**
* web启动初始化
* @param engine
*/
@Override
public void onInit(FastEngine engine) throws Exception {
//初始化Quartz任务调度插件
engine.getConfig(FastQuartzConfig.class)
.setDebug(false)
.setCreateTable(true)//是否在数据库中创建表格
.setDropTableShutdown(true)//当项目停止后,是否清空表格,一般本地调试使用
.setUseDatabase(true);
/**此处省略其他配置代码**/
}
/**此处省略其他代码**/
}
实现定时器
在quartz执行任务的基础上,让开发者直观舒服的开启定时任务,开发者不用再去熟悉quartz复杂的配置规则。
FastChar-Job原则是以最简单直观的方式去启动强大的任务系统。
每日定时循环任务
/**
* 每日凌晨1点执行,可做一些定时更新的任务
*/
public class AlwaysJob extends FastJobBase<AlwaysJob> {
private static final long serialVersionUID = 3693212231098999966L;
public static void startJob() {
Calendar instance = Calendar.getInstance();
instance.add(Calendar.DAY_OF_MONTH, 1);
instance.set(Calendar.HOUR_OF_DAY, 1);
instance.set(Calendar.MINUTE, 0);
instance.set(Calendar.SECOND, 0);
instance.set(Calendar.MILLISECOND, 0);
new AlwaysJob()
.setCode("AlwaysJob")//定时任务的唯一标识符
.setDateTime(instance.getTime())
.start();
}
@Override
public void run() {
/**执行定时任务的操作**/
}
@Override
public void stop() {
super.stop();
//停止后,手动启动一次,以实现循环功能
startJob();
}
}
单次定时任务
public class InitAllJob extends FastJobBase<InitAllJob> {
public static void startJob() {
//调用启动方法后,等待30秒执行
Calendar instance = Calendar.getInstance();
instance.add(Calendar.SECOND, 30);
new InitAllJob()
.setCode("InitAllJob")//定时任务的唯一标识符
.setDateTime(instance.getTime())
.start();
}
@Override
public void run() {
/**执行定时任务的操作**/
}
}
循环定时任务
public class InitAllJob extends FastJobBase<InitAllJob> {
public static void startJob() {
//调用启动方法后,等待30秒执行
Calendar instance = Calendar.getInstance();
instance.add(Calendar.SECOND, 30);
new InitAllJob()
.setCode("InitAllJob")//定时任务的唯一标识符
.setDateTime(instance.getTime())
.start();
}
@Override
public void run() {
/**执行定时任务的操作**/
}
@Override
public void stop() {
super.stop();
//停止后,手动启动一次,以实现循环功能
startJob();
}
}