Simple and easy go task framework, support loop & cron & queue
MIT License
简约大方的go-task组件 支持cron、loop、queue三种模式
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)
}
}
package main
import (
"fmt"
. "github.com/devfeel/dottask"
"time"
)
var service *TaskService
func Job_Config(ctx *TaskContext) error {
fmt.Println(time.Now().String(), " => Job_Config")
//time.Sleep(time.Second * 3)
return nil
}
func Loop_Config(ctx *TaskContext) error {
fmt.Println(time.Now().String(), " => Loop_Config")
time.Sleep(time.Second * 3)
return nil
}
func RegisterTask(service *TaskService) {
service.RegisterHandler("Job_Config", Job_Config)
service.RegisterHandler("Loop_Config", Loop_Config)
}
func main() {
//step 1: init new task service
service = StartNewService()
//step 2: register all task handler
RegisterTask(service)
//step 3: load config file
service.LoadConfig("d:\\task.conf")
//step 4: start all task
service.StartAllTask()
fmt.Println(service.PrintAllTasks())
for {
time.Sleep(time.Hour)
}
}
<?xml version="1.0" encoding="UTF-8"?>
<config>
<global isrun="true" logpath="d:/"/>
<tasks>
<task taskid="Loop_Config" type="loop" isrun="true" duetime="10000" interval="10" handlername="Loop_Config" />
<task taskid="Job_Config" type="cron" isrun="true" express="0 */5 * * * *" handlername="Job_Config" />
</tasks>
</config>
yaml - https://gopkg.in/yaml.v2
QQ群:193409346