Files
2021-09-28 11:47:19 +08:00

42 lines
913 B
Go

package task
import (
"SciencesServer/config"
cache2 "SciencesServer/serve/cache"
"SciencesServer/serve/cache/logic"
"SciencesServer/utils"
"fmt"
"time"
)
type TaskQueue struct{}
func (this *TaskQueue) Queue() {
go utils.TryCatch(func() {
for {
now := time.Now()
cache, _ := cache2.Cache.ZRangebyscore(config.RedisKeyForTaskQueue, &logic.ScoreRangeBy{Min: "0",
Max: fmt.Sprintf("%d", now.Unix())})
if len(cache) > 0 {
for _, v := range cache {
body, _ := cache2.Cache.HGet(config.RedisKeyForTaskQueueBody, v)
task := new(Task)
_ = task.UnmarshalBinary([]byte(body))
task.Consume()
}
// 销毁信息
_ = cache2.Cache.ZRem(config.RedisKeyForTaskQueue, cache)
_ = cache2.Cache.HDel(config.RedisKeyForTaskQueueBody, cache...)
}
// 每秒执行一次
time.Sleep(time.Second)
}
})
}
func NewTaskQueue() *TaskQueue {
return &TaskQueue{}
}