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
实现任务调度与执行