45 lines
1.5 KiB
Go
45 lines
1.5 KiB
Go
|
|
package task
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"tyapi-server/internal/infrastructure/task/implementations/asynq"
|
|||
|
|
"tyapi-server/internal/infrastructure/task/interfaces"
|
|||
|
|
|
|||
|
|
"go.uber.org/zap"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// TaskFactory 任务工厂
|
|||
|
|
type TaskFactory struct{}
|
|||
|
|
|
|||
|
|
// NewTaskFactory 创建任务工厂
|
|||
|
|
func NewTaskFactory() *TaskFactory {
|
|||
|
|
return &TaskFactory{}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// CreateApiTaskQueue 创建API任务队列
|
|||
|
|
func (f *TaskFactory) CreateApiTaskQueue(redisAddr string, logger interface{}) interfaces.ApiTaskQueue {
|
|||
|
|
// 这里可以根据配置选择不同的实现
|
|||
|
|
// 目前使用Asynq实现
|
|||
|
|
return asynq.NewAsynqApiTaskQueue(redisAddr, logger.(*zap.Logger))
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// CreateArticleTaskQueue 创建文章任务队列
|
|||
|
|
func (f *TaskFactory) CreateArticleTaskQueue(redisAddr string, logger interface{}) interfaces.ArticleTaskQueue {
|
|||
|
|
// 这里可以根据配置选择不同的实现
|
|||
|
|
// 目前使用Asynq实现
|
|||
|
|
return asynq.NewAsynqArticleTaskQueue(redisAddr, logger.(*zap.Logger))
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// NewApiTaskQueue 创建API任务队列(包级别函数)
|
|||
|
|
func NewApiTaskQueue(redisAddr string, logger *zap.Logger) interfaces.ApiTaskQueue {
|
|||
|
|
return asynq.NewAsynqApiTaskQueue(redisAddr, logger)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// NewAsynqClient 创建Asynq客户端(包级别函数)
|
|||
|
|
func NewAsynqClient(redisAddr string, scheduledTaskRepo interface{}, logger *zap.Logger) *asynq.AsynqClient {
|
|||
|
|
return asynq.NewAsynqClient(redisAddr, logger)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// NewArticleTaskQueue 创建文章任务队列(包级别函数)
|
|||
|
|
func NewArticleTaskQueue(redisAddr string, logger *zap.Logger) interfaces.ArticleTaskQueue {
|
|||
|
|
return asynq.NewAsynqArticleTaskQueue(redisAddr, logger)
|
|||
|
|
}
|