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