- Push(delaySecond int64, taskType string) *Task
- AfterFunc(delaySecond int64, f func())
go get github.com/invxp/delayqueue
package main
import (
"github.com/invxp/delayqueue"
"log"
"time"
)
func main() {
//新建一个DelayQueue
dq := delayqueue.New()
delaySeconds := int64(5)
//5秒后执行
dq.AfterFunc(delaySeconds, func() { log.Println("After 5 second function") })
//开启任务(会阻塞, 创建一个协程)
go func() {
dq.Run()
}()
//等待10秒后退出
time.Sleep(time.Second * 10)
log.Println("close delay queue error", dq.Close())
}
$ go test -v -race -run @XXXXX(具体方法名)
PASS / FAILED
- 优化过期的Task处理方式(多层时间轮, 感觉没啥必要)
- 支持分布式数据同步(Raft, CP, 放弃性能保证一致性)