package main import ( "context" "flag" "fmt" "github.com/zeromicro/go-zero/core/logx" "os" "qnc-server/app/user/cmd/api/internal/config" "qnc-server/app/user/cmd/api/internal/handler" "qnc-server/app/user/cmd/api/internal/queue" "qnc-server/app/user/cmd/api/internal/svc" "github.com/zeromicro/go-zero/core/conf" "github.com/zeromicro/go-zero/rest" ) var configFile = flag.String("f", "etc/main.yaml", "the config file") func main() { flag.Parse() var c config.Config conf.MustLoad(*configFile, &c) svcContext := svc.NewServiceContext(c) defer svcContext.Close() // 启动 asynq 消费者 go func() { ctx := context.Background() // 初始化 cron job 或异步任务队列 asynq := queue.NewCronJob(ctx, svcContext) mux := asynq.Register() // 启动 asynq 消费者 if err := svcContext.AsynqServer.Run(mux); err != nil { logx.WithContext(ctx).Errorf("异步任务启动失败: %+v", err) os.Exit(1) } }() server := rest.MustNewServer(c.RestConf) defer server.Stop() handler.RegisterHandlers(server, svcContext) fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port) server.Start() }