Schedule Endpoint
Schedule Endpoint 用来创建和启动定时任务。使用cron表达式定义任务触发时间。
# Type
endpoint/schedule
# 启动配置
无
# 配置cron
router.From 配置cron表达式。例如:
//每隔1秒执行
router1 := endpoint.NewRouter().From("*/1 * * * * *").Process(func(router *endpoint.Router, exchange *endpoint.Exchange) bool {
exchange.In.GetMsg().Type = "TEST_MSG_TYPE1"
fmt.Println("router1 执行...", time.Now().UnixMilli())
//业务逻辑,例如读取文件、定时去拉取一些数据交给规则链处理
return true
}).
//指定交给哪个规则链ID处理
To("chain:default").End()
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
其他参数,参考 路由Router 定义。
# cron格式
cron表达式表示一组时间,使用6个空格分隔的字段。例如:* * * * * * 从左往右字段分别代表:
字段 | 是否必须 | 允许值 | 允许特殊字符 |
---|---|---|---|
Seconds | Yes | 0-59 | * / , - |
Minutes | Yes | 0-59 | * / , - |
Hours | Yes | 0-23 | * / , - |
Day of month | Yes | 1-31 | * / , - ? |
Month | Yes | 1-12 或者 JAN-DEC | * / , - |
Day of week | Yes | 0-6 或者 SUN-SAT | * / , - ? |
注意:Month和Day of week字段值不区分大小写。"SUN"、"Sun"和"sun"都是可以允许的。
也可以使用几个预定义的变量来代替cron表达式。
变量 | 描述 | 等价于 |
---|---|---|
@yearly (or @annually) | 每年1月1日0点运行一次 | 0 0 0 1 1 * |
@monthly | 每月1号0点运行一次 | 0 0 0 1 * * |
@weekly | 每周周日0点运行一次 | 0 0 0 * * 0 |
@daily (or @midnight) | 每天0点允许一次 | 0 0 0 * * * |
@hourly | 每小时整点 | 0 0 * * * * |
# 示例
scheduleEndpoint := endpoint.New(schedule.Type, config, nil)
//每隔1秒执行
router1 := endpoint.NewRouter().From("*/1 * * * * *").Process(func(router *endpoint.Router, exchange *endpoint.Exchange) bool {
exchange.In.GetMsg().Type = "TEST_MSG_TYPE1"
fmt.Println("router1 执行...", time.Now().UnixMilli())
//业务逻辑,例如读取文件、定时去拉取一些数据交给规则链处理
return true
}).
//指定交给哪个规则链ID处理
To("chain:default").End()
//添加任务路由
routeId1, err := scheduleEndpoint.AddRouter(router1)
//启动任务
err = scheduleEndpoint.Start()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
以下是使用endpoint的示例代码:
在 GitHub 上编辑此页 (opens new window)
上次更新: 2024/10/31, 11:56:12