https://github.com/hdfg159/scheduler
scheduler - 轻量级任务调度工具
https://github.com/hdfg159/scheduler
delayed delayed-job delayed-queue java job queue schedule task
Last synced: 15 days ago
JSON representation
scheduler - 轻量级任务调度工具
- Host: GitHub
- URL: https://github.com/hdfg159/scheduler
- Owner: hdfg159
- License: apache-2.0
- Created: 2019-11-19T02:06:27.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-11-20T14:12:29.000Z (about 5 years ago)
- Last Synced: 2024-05-16T15:01:40.685Z (over 1 year ago)
- Topics: delayed, delayed-job, delayed-queue, java, job, queue, schedule, task
- Language: Java
- Homepage:
- Size: 82 KB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.MD
- License: LICENSE
Awesome Lists containing this project
README
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();
```
# License
Scheduler is under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) - see the [LICENSE](LICENSE) file for details.