计划任务
在实际业务开发中,经常会开发一些按照计划的时间执行的任务,比如每天检测站点到期关闭,每天定时给会员发券等任务,同时每天定时做报表统计等功能,这些任务的执行可以采用系统的计划任务功能,只需要定义任务的功能,设置执行周期,系统就可以自动执行,极大简化了系统的开发过程。
Niucloud计划任务使用Quartz的定时任务框架,Quartz是一个完全由Java编写的开源任务调度的框架,通过触发器设置作业定时运行规则,控制作业的运行时间。其中quartz集群通过故障切换和负载平衡的功能,能给调度器带来高可用性和伸缩性。主要用来执行定时任务,如:定时发送信息、定时生成报表等等。关于Quartz的详细说明,可以查看Quartz Enterprise Job Scheduler。下面从站点过期关闭的任务说明计划任务的添加与配置。
- 添加任务处理类
使用注解@JobProvider(key = "任务关键字,一般任务类名", name = "任务中文名称", describe = "任务介绍", source = "来源score或插件名称")
例如站点关闭任务:
@JobProvider(key = "SiteExpireCloseJob", name = "站点到期自动关闭", describe = "站点到期自动关闭", source = "core")
任务类继承AbstractJobProvider,实现接口IJobProvider,例如站点关闭任务
public class SiteExpireCloseJob extends AbstractJobProvider implements IJobProvider {
下面是站点关闭任务完整代码
package com.niu.core.job.site;
import com.niu.core.common.component.context.SpringContext;
import com.niu.core.common.component.job.AbstractJobProvider;
import com.niu.core.common.component.job.IJobProvider;
import com.niu.core.common.component.job.annotation.JobProvider;
import com.niu.core.service.core.site.ICoreSiteService;
import org.quartz.JobExecutionContext;
@JobProvider(key = "SiteExpireCloseJob", name = "站点到期自动关闭", describe = "站点到期自动关闭", source = "core")
public class SiteExpireCloseJob extends AbstractJobProvider implements IJobProvider {
private ICoreSiteService coreSiteService() {
return SpringContext.bean(ICoreSiteService.class);
}
@Override
public void exec(JobExecutionContext context) {
coreSiteService().siteExpireClose();
}
}
- 添加任务后重启,登录后台,开发->计划任务->添加任务
- 点击添加任务会看到添加的任务模板,选择任务模板,,配置任务周期以及启用状态
- 配置好之后查看任务的执行情况,(为了测试方便设置的站点关闭任务每分钟执行一次)