dottask - https://github.com/devfeel/dottask
特性
- 支持配置方式(xml + json + yaml)与代码方式
- 支持cron、loop、queue三种模式
- cron模式支持“秒 分 时 日 月 周”配置
- loop模式支持毫秒级别
- queue模式支持毫秒级别
- 上次任务没有停止的情况下不触发下次任务
- 支持Exception、OnBegin、OnEnd注入点
- 支持单独执行TaskHandler
- 支持代码级重设Task的相关设置
- 内建Task运行计数信息,包含执行与异常计数
- 内建针对Task与Counter的OutputHttpHandler,可方便与WebServer自动集成
安装:
go get -u github.com/devfeel/dottask
快速开始:
package main import ( "fmt" . "github.com/devfeel/dottask" "time" ) var service *TaskService func Job_Test(ctx *TaskContext) error { fmt.Println(time.Now().String(), " => Job_Test") //time.Sleep(time.Second * 3) return nil } func Loop_Test(ctx *TaskContext) error { fmt.Println(time.Now().String(), " => Loop_Test") time.Sleep(time.Second * 3) return nil } func main() { //step 1: init new task service service = StartNewService() //step 2: register task handler _, err := service.CreateCronTask("testcron", true, "48-5 */2 * * * *", Job_Test, nil) if err != nil { fmt.Println("service.CreateCronTask error! => ", err.Error()) } _, err = service.CreateLoopTask("testloop", true, 0, 1000, Loop_Test, nil) if err != nil { fmt.Println("service.CreateLoopTask error! => ", err.Error()) } //step 3: start all task service.StartAllTask() fmt.Println(service.PrintAllTasks()) for { time.Sleep(time.Hour) } }