Skip to content

任务调度

Job 模块支持注解式任务与运行时动态任务。

注解式任务

kotlin
@CronTab
class CleanupJobs {
    @Cron("5m", runWithStart = true)
    suspend fun cleanup() {
        // 每五分钟执行
    }

    @Cron("03:30:00")
    fun dailyReport() {
        // 每天 03:30 执行
    }
}
  • 不含冒号或空格的值按时间间隔解析,例如 5m
  • HH:mm:ss 表示每日指定时刻,mm:ss 表示每小时指定时刻。
  • async = false 时,单个任务不会重叠执行;设置为 true 后可并发执行。
  • runWithStart 用于声明启动时执行意图。

动态任务

kotlin
val runtime = JobBuilder("cache-refresh")
    .every("30s")
    .async()
    .task {
        refreshCache()
    }
    .build()

val id = jobManager.registerJob(runtime)
jobManager.deleteTimer(id)

任务抛出异常时,Job 模块会发布 JobRunExceptionEvent,可由事件监听器统一处理。

当前限制

JobBuilder.cron() 在当前源码中仍为 TODO(),因此包含空格的标准 Cron 表达式暂不可用。建议使用固定间隔或 at() 指定时刻。

基于 Apache License 2.0 发布