Simple, zero-dependency scheduling library for Go.
Inspired by the Quartz Java scheduler.
Job interface. Any type that implements it can be scheduled.
type Job interface {
Execute()
Description() string
Key() int
}
Implemented Jobs
- ShellJob
- CurlJob
Scheduler interface
type Scheduler interface {
// start the scheduler
Start()
// schedule the job with the specified trigger
ScheduleJob(job Job, trigger Trigger) error
// get all scheduled jobs keys
GetJobKeys() []int
// get the scheduled job metadata
GetScheduledJob(key int) (*ScheduledJob, error)
// remove the job from the execution queue
DeleteJob(key int) error
// clear all scheduled jobs
Clear()
// shutdown the scheduler
Stop()
}
Implemented Schedulers
- StdScheduler
Trigger interface
type Trigger interface {
NextFireTime(prev int64) (int64, error)
Description() string
}
Implemented Triggers
- CronTrigger
- SimpleTrigger
- RunOnceTrigger
sched := quartz.NewStdScheduler()
sched.Start()
cronTrigger, _ := quartz.NewCronTrigger("1/5 * * * * *")
shellJob := quartz.NewShellJob("ls -la")
curlJob, _ := quartz.NewCurlJob(http.MethodGet, "http://worldclockapi.com/api/json/est/now", "", nil)
sched.ScheduleJob(shellJob, cronTrigger)
sched.ScheduleJob(curlJob, quartz.NewSimpleTrigger(time.Second*7))
sched.Stop()
More code samples can be found in the examples directory.
Licensed under the MIT License.