824 Star 2.6K Fork 821

GVPJbootProjects / jboot

Clone or download
schedule.md
Copy Edit Web IDE Raw Normal History
fuhai   update docs 2018-12-25
# 任务调度## 目录- 基本任务调度
fuhai   update doc 2019-01-08
- 分布式任务调度## 基本任务调度**方案1:**通过 @Cron 注解,这个需要依赖 cron4j 框架:
fuhai   update docks 2019-01-08
fuhai   update doc 2019-01-08
```java//1分钟执行一次@Cron("*/1 * * * *")public class MyTask implements Runnable {    @Override    public void run() {        System.out.println("task running...");    }}```Cron表达式详解:Cron 表达式最多只允许五部分,每部分用空格分隔开来,这五部分从左到右依次表示分、时、天、月、周,其具体规则如下:- 分 :从 0 到 59- 时 :从 0 到 23- 天 :从 1 到 31,字母 L 可以表示月的最后一天- 月 :从 1 到 12,可以别名:jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov" and "dec"- 周 :从 0 到 6,0 表示周日,6 表示周六,可以使用别名: "sun", "mon", "tue", "wed", "thu", "fri" and "sat"如上五部分的分、时、天、月、周又分别支持如下字符,其用法如下:- 数字 n:表示一个具体的时间点,例如 5 * * * * 表示 5 分这个时间点时执行- 逗号 , :表示指定多个数值,例如 3,5 * * * * 表示 3 和 5 分这两个时间点执行- 减号 -:表示范围,例如 1-3 * * * * 表示 1 分、2 分再到 3 分这三个时间点执行- 星号 *:表示每一个时间点,例如 * * * * * 表示每分钟执行- 除号 /:表示指定一个值的增加幅度。  - 例如 */5表示每隔5分钟执行一次(序列:0:00, 0:05, 0:10, 0:15 等等)。  - 再例如3-18/5 * * * * 是指在从3到18分钟值这个范围之中每隔5分钟执行一次(序列:0:03, 0:08, 0:13, 0:18, 1:03, 1:08 等等)。**方案2:**Jboot 通过 `ScheduledThreadPoolExecutor` 封装一个轻量的任务调度框架,使用方法如下:
fuhai   update docks 2019-01-08
fuhai   update doc 2019-01-08
```java@FixedDelay(period = 5)public class MyTask implements Runnable {    @Override    public void run() {       System.out.println("task running...");    }}```**方案3:**使用 JFinal 自带的任务调度方案,参考文档:https://www.jfinal.com/doc/9-1## 分布式任务调度分布式任务在以上的 **基本任务调度** 的基础上,只需要添加 `@EnableDistributedRunnable` 注解即可,例如:示例1:
fuhai   update docks 2019-01-08
fuhai   update doc 2019-01-08
```java@Cron("*/1 * * * *")@EnableDistributedRunnablepublic class MyTask implements Runnable {    @Override    public void run() {        System.out.println("task running...");    }}```示例2:
fuhai   update docks 2019-01-08
fuhai   update doc 2019-01-08
```java@FixedDelay(period = 5)@EnableDistributedRunnablepublic class MyTask implements Runnable {    @Override    public void run() {        System.out.println("task running...");    }}```注意:分布式任务调度需要依赖 redis,因此,在使用分布式任务之前需要做好如下配置:```jboot.redis.host = 127.0.0.1jboot.redis.password = ```
Java
1
https://git.oschina.net/JbootProjects/jboot.git
git@git.oschina.net:JbootProjects/jboot.git
JbootProjects
jboot
jboot
master

Search