cron

package
v0.1.4 Latest Latest
Warning

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

Go to latest
Published: Nov 25, 2024 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterCron

func RegisterCron(cronName string, cron Interface)

func Run

func Run(ctx context.Context)

Types

type Base

type Base struct {
	Ctx context.Context
	// contains filtered or unexported fields
}

func (*Base) AddBaseTaskList

func (b *Base) AddBaseTaskList(task func(context.Context))

func (*Base) AddProcessAddTaskList

func (b *Base) AddProcessAddTaskList(task func(context.Context))

func (*Base) Before

func (b *Base) Before(name, lockName string, deadLockExpireTime time.Duration, maxConcurrencyCnt int)

func (*Base) Defer

func (b *Base) Defer()

func (*Base) GetIsRun

func (b *Base) GetIsRun() bool

func (*Base) Init

func (b *Base) Init(_ Interface)

func (*Base) Process

func (b *Base) Process()

func (*Base) Run

func (b *Base) Run()

type Config

type Config struct {
	LockPreName string       `json:"lockPreName"`
	IsRunCron   bool         `json:"isRunCron"`
	CronList    []ConfigItem `json:"cronList"`
}

type ConfigItem

type ConfigItem struct {
	Name                      string `json:"name"`
	DeadLockExpireMillisecond int64  `json:"deadLockExpireMillisecond"`
	MaxConcurrencyCnt         int    `json:"maxConcurrencyCnt"`

	JobType                 string                  `json:"jobType"`
	CronJobParams           CronJobParams           `json:"cronJobParams"`
	DurationJobParams       DurationJobParams       `json:"durationJobParams"`
	DurationRandomJobParams DurationRandomJobParams `json:"durationRandomJobParams"`
}

type CronJobParams

type CronJobParams struct {
	Crontab     string `json:"crontab"`
	WithSeconds bool   `json:"withSeconds"`
}

type DurationJobParams

type DurationJobParams struct {
	EveryMillisecond int64 `json:"everyMillisecond"`
}

type DurationRandomJobParams

type DurationRandomJobParams struct {
	MinMillisecond int64 `json:"minMillisecond"`
	MaxMillisecond int64 `json:"maxMillisecond"`
}

type Interface

type Interface interface {
	GetIsRun() bool
	AddBaseTaskList(task func(context.Context))
	AddProcessAddTaskList(task func(context.Context))

	// Init 初始化只会执行一次
	Init(base Interface)
	Process()

	Before(name, lockName string, deadLockExpireTime time.Duration, maxConcurrencyCnt int)
	Run()
	Defer()
}

Interface 执行顺序 Before->Process->Run->Defer 只建议重写 Init 和 Process Init 添加固定执行的脚本,使用 AddBaseTaskList 添加,尽量通过该方法添加 Process 添加运行中才能确定执行的脚本,使用 AddProcessAddTaskList 添加

Jump to

Keyboard shortcuts

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