Files
bl/common/utils/cronex/cronex.go

53 lines
836 B
Go

// guonaihong apache 2.0
package cronex
import (
"github.com/antlabs/timer"
)
type TimerNoder = timer.TimeNoder
type Option = timer.Option
// cronex
type Cronex struct {
timer.Timer
}
// 初始化一个cronex
func New(opt ...Option) *Cronex {
if len(opt) == 0 {
opt = append(opt, timer.WithMinHeap())
}
return &Cronex{
Timer: timer.NewTimer(opt...),
}
}
// 添加函数
func (c *Cronex) AddFunc(spec string, cmd func()) (node TimerNoder, err error) {
var schedule timer.Next
schedule, err = standardParser.Parse(spec)
if err != nil {
return
}
return c.CustomFunc(schedule, cmd), nil
}
// 运行消费者循环
func (c *Cronex) Run() {
c.Run()
}
// 异步运行消费者循环
func (c *Cronex) Start() {
//ants.Submit(c.Run)
go c.Run()
}
// 关闭cronex的任务循环
func (c *Cronex) Stop() {
c.Stop()
}