任务调度
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() 指定时刻。