🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 控制台命令 ## 介绍 0.4.1版本以上,框架支持了控制台任务支持,可以通过控制台任务完成脚本执行,配合调度器还可以实现定时任务功能。 ## 使用说明 和 http 服务一样,控制台任务也有一个类似路由的方法进行任务注册。 通过 orange 脚手架创建的项目,控制台路由文件默认在 route/job.go 中声明。 控制台任务定义需要通过结构体实现 `app.JobSrv` 接口,即接口体中需要有 `func (s *Route) JobDispatch() ` 和 `func (s *Route) Register() ` 方法。 JobDispatch 方法中添加各类控制台任务的名称和具体方法的绑定,Register方法用于初始化启动自定义服务(可以共用http的Register方法),和 init 方法的区别是,Register方法在框架相关组件加载完成后再执行,避免了一些空指针的情况。 ## 定义控制台任务 通过 `app.JobRun("任务名称", "绑定方法", "超时时间")` 方法对任务进行注册,具体如下: ``` func (s *Route) JobDispatch() { // 注册一个任务 app.JobRun("showTime", controller.JobShowTime, 30*time.Second) } ``` 其中 `controller.JobShowTime` 是一个 `func(c *context.Context)error` 这样的方法,具体的业务可以放到该方法内。 ## 控制台任务任务执行 定义好控制台任务后通过构建脚手架生成的 `job.go` 这个main函数带上 --jobRun 参数即可执行对应任务。 直接执行 `go run job.go --config=config/config.toml --jobRun=showTime` 即可运行注册的任务。 ## 完整示例 将下面完整代码保持成 `job.go` 直接运行 `go run job.go --jobRun=showTime` ``` package main import ( "demo9/http/controller" "gitee.com/zhucheer/orange/app" "time" ) func main(){ router := &Route{} app.AppStart(router) } type Route struct { } func (s *Route) JobDispatch() { app.JobRun("showTime", controller.JobShowTime, 30*time.Second) } func (s *Route) Register() { } ```