michaelzx / cron-mgr

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

cron mgr

type IJobMgr interface {
    AddOnceJob(desc string, nextTime time.Time, runFunc jobFunc) (*Job, error)
    AddJob(desc string, spec string, runFunc jobFunc) (*Job, error)
    DelJob(id string)
    GetJob(id string) *Job
    GetJobList() []*Job
}
type IJob interface {
    GetEntity() cron.Entry
    OnFail(f jobFailFunc)
    OnSuccess(f jobSuccessFunc)
    AddBeforeFunc(f jobFunc)
    AddAfterFunc(f jobFunc)
    Run()
}

Usage

basic

jobMater = cronmgr.NewJobMgr(&cronmgr.JobMgrOption{})

add repeat job

job, err := jobMater.AddJob("test-job-repeat", "*/5 * * * * ?", func(thisJob *cronmgr.Job) error {
    fmt.Println(time.Now(), thisJob.ID, "run")
    return nil
})
if err != nil {
    panic(err)
}
job.OnSuccess(func(thisJob *cronmgr.Job) {
    // ...
})
job.OnFail(func(thisJob *cronmgr.Job, jobErr error) {
    // ...
})

add once job

execTime := time.Now().Add(time.Duration(10) * time.Second)
job, err := jobMater.AddOnceJob("test-job-success", execTime, func(thisJob *cronmgr.Job) error {
    fmt.Println(time.Now(), thisJob.ID, "run")
    return nil
})
if err != nil {
    panic(err)
}
job.OnSuccess(func(thisJob *cronmgr.Job) {
    // ...
})
job.OnFail(func(thisJob *cronmgr.Job, jobErr error) {
    // ...
})

About


Languages

Language:Go 100.0%