scheduler

package
v1.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 2, 2023 License: MIT Imports: 9 Imported by: 3

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrLockFailed = errors.New("lock failed")

Functions

func Provider

func Provider(creator func(cc infra.Resolver, creator JobCreator), options ...Option) infra.DaemonProvider

Types

type Job

type Job struct {
	ID   cron.EntryID
	Name string
	Plan string

	Paused bool
	// contains filtered or unexported fields
}

Job is a job object

func (Job) Next

func (job Job) Next(nextNum int) ([]time.Time, error)

Next get execute plan for job

type JobCreator

type JobCreator interface {
	// Add a cron job
	Add(name string, plan string, handler interface{}) error
	// AddAndRunOnServerReady add a cron job, and trigger it immediately when server is ready
	AddAndRunOnServerReady(name string, plan string, handler interface{}) error

	// MustAdd add a cron job
	MustAdd(name string, plan string, handler interface{})
	// MustAddAndRunOnServerReady add a cron job, and trigger it immediately when server is ready
	MustAddAndRunOnServerReady(name string, plan string, handler interface{})
}

JobCreator is a creator for cron job

type JobHandler

type JobHandler interface {
	Handle(resolver infra.Resolver) error
}

JobHandler 定时任务 Job 处理接口,所有的任务都要实现该接口

type LockManager added in v1.1.3

type LockManager interface {
	TryLock(ctx context.Context) error
	Release(ctx context.Context) error
}

type LockManagerBuilder added in v1.1.3

type LockManagerBuilder func(name string) LockManager

type Option

type Option func(resolver infra.Resolver, cr Scheduler)

Option 定时任务配置型

func SetLockManagerOption added in v1.1.3

func SetLockManagerOption(lockManager func(resolver infra.Resolver) LockManagerBuilder) Option

SetLockManagerOption 设置分布式锁管理器实现

type OverlapJobHandler

type OverlapJobHandler struct {
	// contains filtered or unexported fields
}

OverlapJobHandler 是一个 Job Main,可以避免当前任务执行时间过长时,同一任务同时存在多个运行实例的问题 当任务还在执行时,下一次调度将会被取消

func WithoutOverlap

func WithoutOverlap(handler interface{}) *OverlapJobHandler

WithoutOverlap 可以避免当前任务执行时间过长时,同一任务同时存在多个运行实例的问题 当任务还在执行时,下一次调度将会被取消

func (*OverlapJobHandler) Handle

func (handler *OverlapJobHandler) Handle(resolver infra.Resolver) error

func (*OverlapJobHandler) SkipCallback

func (handler *OverlapJobHandler) SkipCallback(fn func()) *OverlapJobHandler

type Scheduler

type Scheduler interface {
	JobCreator
	// Remove remove a cron job
	Remove(name string) error
	// Pause set job status to paused
	Pause(name string) error
	// Continue set job status to continue
	Continue(name string) error
	// Info get job info
	Info(name string) (Job, error)

	// Start cron manager
	Start()
	// Stop cron job manager
	Stop()

	LockManagerBuilder(builder LockManagerBuilder)
}

Scheduler is a manager object to manage cron jobs

func NewManager

func NewManager(resolver infra.Resolver) Scheduler

NewManager create a new Scheduler

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL