package main import ( "chatapp3-golang/internal/bootstrap" "chatapp3-golang/internal/service/cprelationbroadcast" "chatapp3-golang/internal/service/firstrechargereward" "chatapp3-golang/internal/service/regionimgroup" "chatapp3-golang/internal/service/registerreward" "chatapp3-golang/internal/service/taskcenter" "chatapp3-golang/internal/service/voiceroomredpacket" "chatapp3-golang/internal/service/voiceroomrocket" "chatapp3-golang/internal/service/weekstar" "context" "log" "os/signal" "syscall" "time" ) func main() { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() app, err := bootstrap.New(ctx) if err != nil { log.Fatalf("bootstrap consumer failed: %v", err) } registerRewardService := registerreward.NewRegisterRewardService(app.Config, app.Repository.DB, app.Repository.Redis, &app.Gateways) weekStarService := weekstar.NewWeekStarService(app.Config, app.Repository.DB, app.Repository.Redis, &app.Gateways) taskCenterService := taskcenter.NewService(app.Config, app.Repository.DB, &app.Gateways) firstRechargeRewardService := firstrechargereward.NewService(app.Config, app.Repository.DB, &app.Gateways) regionIMGroupService := regionimgroup.NewService(app.Config, app.Repository.DB, &app.Gateways) cpRelationBroadcastService := cprelationbroadcast.NewService(app.Config, app.Repository.DB, regionIMGroupService) voiceRoomRedPacketService := voiceroomredpacket.NewService(app.Config, app.Repository.DB, app.Repository.Redis, app.Gateways.Wallet, regionIMGroupService, app.Gateways.Room) voiceRoomRedPacketService.SetRegionResolver(&app.Gateways) voiceRoomRocketService := voiceroomrocket.NewService(app.Config, app.Repository.DB, app.Repository.Redis, &app.Gateways) voiceRoomRocketService.SetRegionBroadcaster(regionIMGroupService) workerCtx, workerCancel := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM) defer workerCancel() if err := registerRewardService.Start(workerCtx); err != nil { log.Fatalf("start register reward consumer failed: %v", err) } if err := weekStarService.StartMessageConsumer(workerCtx); err != nil { log.Fatalf("start week star message consumer failed: %v", err) } if err := taskCenterService.StartMessageConsumer(workerCtx); err != nil { log.Fatalf("start task center message consumer failed: %v", err) } if err := firstRechargeRewardService.StartMessageConsumer(workerCtx); err != nil { log.Fatalf("start first recharge reward message consumer failed: %v", err) } if err := cpRelationBroadcastService.StartMessageConsumer(workerCtx); err != nil { log.Fatalf("start cp relation broadcast message consumer failed: %v", err) } if err := voiceRoomRocketService.Start(workerCtx); err != nil { log.Fatalf("start voice room rocket workers failed: %v", err) } if err := taskCenterService.StartArchiveWorker(workerCtx); err != nil { log.Fatalf("start task center archive worker failed: %v", err) } voiceRoomRedPacketService.StartRefundWorker(workerCtx) log.Printf("chatapp3-golang consumer started") <-workerCtx.Done() log.Printf("chatapp3-golang consumer stopped") }