A minimalistic and 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 starts the scheduler.
Start()
// IsStarted determines whether the scheduler has been started.
IsStarted() bool
// ScheduleJob schedules a job using a specified trigger.
ScheduleJob(job Job, trigger Trigger) error
// GetJobKeys returns the keys of all of the scheduled jobs.
GetJobKeys() []int
// GetScheduledJob returns the scheduled job with the specified key.
GetScheduledJob(key int) (*ScheduledJob, error)
// DeleteJob removes the job with the specified key from the Scheduler's execution queue.
DeleteJob(key int) error
// Clear removes all of the scheduled jobs.
Clear()
// Stop shutdowns the scheduler.
Stop()
}
Implemented Schedulers
- StdScheduler
Trigger interface
type Trigger interface {
NextFireTime(prev int64) (int64, error)
Description() string
}
Implemented Triggers
- CronTrigger
- SimpleTrigger
- RunOnceTrigger
Field Name | Mandatory | Allowed Values | Allowed Special Characters |
---|---|---|---|
Seconds | YES | 0-59 | , - * / |
Minutes | YES | 0-59 | , - * / |
Hours | YES | 0-23 | , - * / |
Day of month | YES | 1-31 | , - * ? / |
Month | YES | 1-12 or JAN-DEC | , - * / |
Day of week | YES | 1-7 or SUN-SAT | , - * ? / |
Year | NO | empty | * |
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.