Skip to content

计划任务

在实际业务开发中,经常会开发一些按照计划的时间执行的任务,比如每天检测站点到期关闭,每天定时给会员发券等任务,同时每天定时做报表统计等功能,这些任务的执行可以采用系统的计划任务功能,只需要定义任务的功能,设置执行周期,系统就可以自动执行,极大简化了系统的开发过程。

Niucloud 计划任务使用 Quartz 的定时任务框架,Quartz 是一个完全由 Java 编写的开源任务调度的框架,通过 触发器 设置作业定时运行规则,控制作业的运行时间。其中 quartz 集群通过故障切换和负载平衡的功能,能给调度器带来高可用性和伸缩性。主要用来执行定时任务,如:定时发送信息、定时生成报表等等。关于 Quartz 的详细说明,可以查看 Quartz Enterprise Job Scheduler。下面从站点过期关闭的任务说明计划任务的添加与配置。

添加任务处理类

使用注解@JobProvider(key = "任务关键字,一般任务类名", name = "任务中文名称", describe = "任务介绍", source = "来源score或插件名称")

例如站点关闭任务:

java
@JobProvider(key = "SiteExpireCloseJob", name = "站点到期自动关闭", describe = "站点到期自动关闭", source = "core")

任务类继承AbstractJobProvider,实现接口IJobProvider,例如站点关闭任务

java
public class SiteExpireCloseJob extends AbstractJobProvider implements IJobProvider {
}

下面是站点关闭任务完整代码

java
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();
    }
}

添加任务后重启,登录后台,开发->计划任务->添加任务

点击添加任务会看到添加的任务模板,选择任务模板,配置任务周期以及启用状态

基于 MIT 协议发布