Skip to content

Koala Task Starter

考拉任务启动模块

基于 Spring Scheduling 开发, 实现了持久化的动态定时任务管理与执行功能

快速开始

数据库

请先参照快速开始初始化数据库

接口文档

实现了任务管理和任务日志管理接口, 可通过访问接口文档查看具体信息

接口文档地址: http://${host}:${port}/swagger-ui.html

创建任务

创建自定义任务TestTask:

java
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class TestTask implements Runnable {

  @Override
  public void run() {
    // 任务逻辑...
  }
}
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class TestTask implements Runnable {

  @Override
  public void run() {
    // 任务逻辑...
  }
}

配置任务

sql
insert into k_task (name, task_config, trigger_config, is_enabled) values ("测试任务", "testTask", "0/5 * * * * ?", 1);
insert into k_task (name, task_config, trigger_config, is_enabled) values ("测试任务", "testTask", "0/5 * * * * ?", 1);

默认任务执行器对应的字段说明如下:

字段名称字段含义内容示例
name任务名称测试任务
task_config任务配置, 即任务在 Spring IOC 中的bean名称testTask
trigger_config触发器配置, 支持 cron 表达式和 Duration 表达式0/5 * * * * ?
is_enabled是否启动, 如果为是则自动开始调度1

进阶

任务实例工厂

可实现TaskInstanceFactory自定义任务实例工厂:

java
public class MyTaskInstanceFactory implements TaskInstanceFactory {

  @Override
  public Runnable from(Task task) {
    // 创建任务逻辑...
  }
}
public class MyTaskInstanceFactory implements TaskInstanceFactory {

  @Override
  public Runnable from(Task task) {
    // 创建任务逻辑...
  }
}

模块内置了如下任务实例工厂:

  • TaskSpringBeanInstanceFactory: 基于 Spring Bean 的任务工厂, 从 IOC 容器中获取任务 bean

任务触发器工厂

可实现TaskTriggerFactory自定义任务触发器工厂:

java
public class MyTaskTriggerFactory implements TaskTriggerFactory {

  @Override
  public Trigger from(Task task) {
    // 创建触发器逻辑...
  }
}
public class MyTaskTriggerFactory implements TaskTriggerFactory {

  @Override
  public Trigger from(Task task) {
    // 创建触发器逻辑...
  }
}

模块内置了如下任务触发器工厂:

  • TaskSchedulingTriggerFactory: 基于 Trigger 的任务触发器工厂, 支持 cron 表达式和 Duration 表达式

任务执行器

可实现TaskExecutor自定义任务执行器:

java
public class MyTaskExecutor implements TaskExecutor {

  @Override
  public void schedule(Task task) {
    // 调度逻辑...
  }

  @Override
  public void cancel(Task task) {
    // 取消逻辑...
  }
    
  @Override
  public void execute(Task task) {
    // 执行逻辑...
  }
}
public class MyTaskExecutor implements TaskExecutor {

  @Override
  public void schedule(Task task) {
    // 调度逻辑...
  }

  @Override
  public void cancel(Task task) {
    // 取消逻辑...
  }
    
  @Override
  public void execute(Task task) {
    // 执行逻辑...
  }
}

模块内置了如下任务执行器:

  • DefaultTaskExecutor: 默认任务执行器, 基于 Spring 提供的 TaskScheduler 实现任务调度与执行