// Package task provides asynchronous task processing with worker pools package task import ( "context" "fmt" "modelRT/config" "modelRT/logger" "gorm.io/gorm" ) // InitTaskWorker initializes a task worker with the given configuration and database connection func InitTaskWorker(ctx context.Context, config config.ModelRTConfig, db *gorm.DB) (*TaskWorker, error) { // Create worker configuration workerCfg := WorkerConfig{ PoolSize: config.AsyncTaskConfig.WorkerPoolSize, PreAlloc: true, MaxBlockingTasks: 100, QueueConsumerCount: config.AsyncTaskConfig.QueueConsumerCount, PollingInterval: config.AsyncTaskConfig.HealthCheckInterval, } // Create task handler factory handlerFactory := NewHandlerFactory() handlerFactory.CreateDefaultHandlers() handler := DefaultCompositeHandler() // Create task worker worker, err := NewTaskWorker(ctx, workerCfg, db, config.RabbitMQConfig, handler) if err != nil { return nil, fmt.Errorf("failed to create task worker: %w", err) } logger.Info(ctx, "Task worker initialized", "worker_pool_size", workerCfg.PoolSize, "queue_consumers", workerCfg.QueueConsumerCount, ) return worker, nil }