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