Files
cronlib/example/hard/hard.go
2020-08-04 17:56:06 +08:00

94 lines
1.7 KiB
Go

package main
import (
"log"
"time"
"github.com/rfyiamcool/cronlib"
)
// start multi job
func main() {
cron := cronlib.New()
specList := map[string]string{
"risk.scan.total.1s": "*/1 * * * * *",
"risk.scan.total.2s": "*/2 * * * * *",
"risk.scan.total.3s": "*/3 * * * * *",
"risk.scan.total.4s": "*/4 * * * * *",
"risk.scan.total.5s.to.3s": "*/5 * * * * *",
}
for srv, spec := range specList {
tspec := spec // copy
ssrv := srv // copy
job, err := cronlib.NewJobModel(
spec,
func() {
stdout(ssrv, tspec)
},
)
if err != nil {
panic(err.Error())
}
err = cron.Register(srv, job)
if err != nil {
panic(err.Error())
}
}
// add job test
time.AfterFunc(5*time.Second, func() {
spec := "*/1 * * * * *"
srv := "risk.scan.total.new_add.1s"
job, _ := cronlib.NewJobModel(
spec,
func() {
stdout(srv, spec)
},
)
cron.UpdateJobModel(srv, job)
log.Println("reset finish", srv)
})
// update job test
time.AfterFunc(10*time.Second, func() {
spec := "*/3 * * * * *"
srv := "risk.scan.total.5s.to.3s"
log.Println("reset 5s to 3s", srv)
job, _ := cronlib.NewJobModel(
spec,
func() {
stdout(srv, spec)
},
)
cron.UpdateJobModel(srv, job)
log.Println("reset finish", srv)
})
// kill job test
time.AfterFunc(15*time.Second, func() {
srv := "risk.scan.total.1s"
log.Println("stoping", srv)
cron.StopService(srv)
log.Println("stop finish", srv)
})
// stop cron
time.AfterFunc(25*time.Second, func() {
srvPrefix := "risk"
log.Println("stoping srv prefix", srvPrefix)
cron.StopServicePrefix(srvPrefix)
})
cron.Start()
log.Println("cron start")
cron.Wait()
}
func stdout(srv, spec string) {
log.Println(srv, spec)
}