tyc-server/app/main/api/internal/queue/routes.go

50 lines
1.4 KiB
Go
Raw Normal View History

2024-11-21 12:14:34 +08:00
package queue
import (
"context"
"fmt"
2025-05-27 18:35:01 +08:00
"tyc-server/app/main/api/internal/config"
2025-04-27 12:17:18 +08:00
"tyc-server/app/main/api/internal/svc"
"tyc-server/app/main/api/internal/types"
2025-03-21 15:47:11 +08:00
"github.com/hibiken/asynq"
2025-05-27 18:35:01 +08:00
"github.com/zeromicro/go-zero/core/logx"
2024-11-21 12:14:34 +08:00
)
type CronJob struct {
2025-05-27 18:35:01 +08:00
config *config.Config
2024-11-21 12:14:34 +08:00
ctx context.Context
svcCtx *svc.ServiceContext
}
2025-05-27 18:35:01 +08:00
func NewCronJob(config *config.Config, ctx context.Context, svcCtx *svc.ServiceContext) *CronJob {
2024-11-21 12:14:34 +08:00
return &CronJob{
2025-05-27 18:35:01 +08:00
config: config,
2024-11-21 12:14:34 +08:00
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *CronJob) Register() *asynq.ServeMux {
redisClientOpt := asynq.RedisClientOpt{Addr: l.svcCtx.Config.CacheRedis[0].Host, Password: l.svcCtx.Config.CacheRedis[0].Pass}
scheduler := asynq.NewScheduler(redisClientOpt, nil)
2025-05-27 18:35:01 +08:00
// 根据配置决定是否启动清理任务
if l.config.CleanTask.Enabled {
task := asynq.NewTask(types.MsgCleanQueryData, nil, nil)
_, err := scheduler.Register(l.config.CleanTask.Time, task)
if err != nil {
panic(fmt.Sprintf("定时任务注册失败:%v", err))
}
scheduler.Start()
logx.Infof("清理数据定时任务已启动")
}
2024-11-21 12:14:34 +08:00
mux := asynq.NewServeMux()
mux.Handle(types.MsgPaySuccessQuery, NewPaySuccessNotifyUserHandler(l.svcCtx))
2025-05-27 18:35:01 +08:00
mux.Handle(types.MsgCleanQueryData, NewCleanQueryDataHandler(l.config, l.svcCtx))
2025-03-21 15:47:11 +08:00
mux.Handle(types.MsgCarMaintenanceQuery, NewCarMaintenanceQueryHandler(l.svcCtx))
2024-11-21 12:14:34 +08:00
return mux
}