maku-module-quartz 为定时任务组件,基于quartz开源框架实现,支持动态新增、修改、暂停、恢复、执行、删除定时任务,还提供了日志查看,方便查看定时任务执行详情,还支持集群部署。

引入

maku-boot/maku-server/pom.xml里面引入组件依赖,如下所示:

<dependency>
    <groupId>net.maku</groupId>
    <artifactId>maku-module-quartz</artifactId>
    <version>${revision}</version>
</dependency>

IDEA开发工具生效

完成上面的引入后,idea开发工具,默认是不会加载这个依赖的,我们就会错误的感觉引入依赖失败。要让idea开发工具生效也很简单,只需要reload一下,就可以了,如下所示:


完成上面这2步后,依赖就会生效。

SQL语句

执行对应的SQL文件(如:MySQL),初始化表结构和菜单等,如下所示

maku-boot/db/mysql/module/maku-module-quartz.sql

启动项目

完成上面2步骤后,再启动项目,则可看到maku-module-quartz对应的功能,如下所示:

使用说明

我们可以动态新增一个定时任务,如下所示:

  • 任务名称:描述定时任务的功能
  • 任务组名:给定时任务分组的,可以在【数据字典】中新增、修改、删除组名
  • bean名称:具体任务类,需要添加到spring容器中,也就是在类上面,添加@Component注解
  • 方法名称:任务类里面定义的方法名,一个任务类可以有多个方法
  • 方法参数:方法接受的参数值,如果有多个参数,可以使用json数据,然后在方法里面解析json
  • cron表达式:定时任务执行的时间,可以根据界面自动生成
  • 是否并发:在相同定时任务中,上一个任务还没结束时,是否启动下一个任务(允许:启动;禁用:不启动),建议禁用

任务类

我们只需要创建一个类,添加@Component注解,就可以当做任务类使用,对应的spring bean名称为testTask,如下所示:

@Slf4j
@Component
public class TestTask {

    public void run(String params) throws InterruptedException {
        log.info("我是testTask.run(),参数:{},正在被执行。", params);
        Thread.sleep(1000);
    }
}