Scheduler - 轻量级任务调度工具
轻量级任务调度工具
-
简易使用:简易创建方式和链式调用 API
-
无依赖:不依赖其他任何组件
-
动态:随时取消任务
-
事件触发:目前支持按照每日时间点调度、周几时间点调度、简单调度(次数、频率、时间范围控制)、支持同一任务顺序执行和非顺序执行
-
拓展性:可以继承
AbstractTrigger
默认继承类 或者 实现Trigger
接口 实现自己的自定义触发器 -
调度线程:支持自定义的线程池实现,按照任务执行消耗时间自动调度到不同线程池
-
异常处理:支持针对每个定时器执行错误异常捕获后的自定义处理
-
错误重试:支持针对每个定时任务出错后设置反复重试次数
创建从现在开始,1秒触发1次,一共执行10次的任务
Triggers.times("自定义触发器名称", 10, 1, ChronoUnit.SECONDS, LocalDateTime.now(),
trigger -> {
// 业务处理
System.out.println("hello world");
})
.schedule();
更多创建方式可以查看 Triggers
工厂方法
通过 Trigger 的
scheduleCancel()
方法 直接取消
Trigger trigger = ... ;
trigger.scheduleCancel();
通过
ScheduleManager
的cancel(String triggerName)
根据触发器自定义名称进行取消
SchedulerManager.INSTANCE.cancel("自定义触发器名称");
Triggers.times("自定义触发器名称", 10, 1, ChronoUnit.SECONDS, LocalDateTime.now(),
trigger -> {
// 耗时业务处理
System.out.println("hello world");
})
.afterExceptionCaught((trigger, throwable) -> {
// 异常处理
})
.schedule();
默认创建任务
sequence
属性为false
(即任务开始时马上放入下一个执行时间任务)
Triggers.times("自定义触发器名称", 5, 1, ChronoUnit.SECONDS, LocalDateTime.now(),
trigger -> {
// 业务处理
System.out.println("hello world");
})
.sequence(true)
.schedule();
Triggers.times("自定义触发器名称", times, 1, ChronoUnit.SECONDS, LocalDateTime.now(),
trigger -> {
throw new RuntimeException("出错了啊");
})
.retry(3)
.schedule();
Scheduler is under the Apache License, Version 2.0 - see the LICENSE file for details.