gosched
Go distributed task scheduler
Getting Started
Download
go get github.com/inuggets/gosched
Usage
Worker
import (
sched "github.com/inuggets/gosched"
"github.com/inuggets/nmq"
)
type Addend struct {
A int64
B int64
}
// New worker
w := sched.NewWorker(
"test", // Worker name
nmq.NewRedisPool("localhost:6379", ""), // redis pool
&sched.WorkerOptions{ // options
Processors: 2,
},
)
// Register 'add' task
w.AddTask(&Task{
ID: "add",
Func: func(payload string) error {
// Run task
addend := &Addend{}
err := json.Unmarshal([]byte(payload), addend)
if err != nil {
return err
}
log.Default().Println(fmt.Sprintf("%d + %d = %d\n", addend.A, addend.B, addend.A+addend.B))
return nil
},
})
// Start worker
go w.Start()
Client
import (
sched "github.com/inuggets/gosched"
"github.com/inuggets/nmq"
)
client := sched.NewClient(nmq.NewRedisPool("localhost:6379", ""), "test")
addend := &Addend{
A: 1,
B: 2,
}
bytes, err := json.Marshal(addend)
if err != nil {
log.Fatal(err)
}
// Submit 'add' task
err = client.SubmitTask("add", string(bytes))
if err != nil {
log.Fatal(err)
}
License
gosched is under the MIT license. See the LICENSE for detail.