| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package task_core
- import (
- task_pg "fwh-toolbox-server/task/plugin"
- "github.com/hibiken/asynq"
- "go.uber.org/zap"
- )
- // type TaskCore interface {
- // CreateTask() *asynq.Client
- // }
- type TaskCore struct {
- redisOpt asynq.RedisClientOpt
- client *asynq.Client
- Scheduler *task_pg.SchedulerManager
- }
- type TaskConfig struct {
- Name string // 任务名
- SvrCfg asynq.Config
- Mux *asynq.ServeMux
- Agg *task_pg.AggregatorManager // 可选
- }
- // 创建TaskCore
- func NewTaskCore(redisOpt asynq.RedisClientOpt) *TaskCore {
- return &TaskCore{
- redisOpt: redisOpt,
- client: asynq.NewClient(redisOpt),
- Scheduler: task_pg.NewSchedulerManager(redisOpt),
- }
- }
- // 创建任务
- func (tc *TaskCore) CreateTask(config TaskConfig) *asynq.Client {
- if config.Mux != nil {
- svr := asynq.NewServer(tc.redisOpt, config.SvrCfg)
- go func() {
- err := svr.Run(config.Mux)
- if err != nil {
- zap.L().Error("could not run server", zap.String("err", err.Error()), zap.String("taskName", config.Name))
- return
- }
- zap.L().Warn("asynq server shutdown", zap.String("taskName", config.Name))
- }()
- } else {
- zap.L().Warn("asynq not server", zap.String("taskName", config.Name))
- }
- if tc.client == nil {
- tc.client = asynq.NewClient(tc.redisOpt)
- }
- return tc.client
- }
|