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)
|
||
} |