mirror of
https://github.com/rfyiamcool/cronlib.git
synced 2025-10-07 11:51:20 +08:00
94 lines
1.7 KiB
Go
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)
|
|
}
|