| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // main.go
- package main
- import (
- "context"
- "go-policy-service/config"
- "go-policy-service/models"
- "go-policy-service/services"
- "go-policy-service/utils"
- "time"
- "github.com/robfig/cron/v3"
- )
- func main() {
- // 初始化配置
- cfg, err := config.LoadConfig()
- if err != nil {
- panic("Failed to load config: " + err.Error())
- }
- // 初始化日志
- utils.InitLogger(cfg.LogLevel)
- // 初始化数据库连接
- if err := models.InitDB(cfg); err != nil {
- utils.Logger.Fatal("Failed to connect database: ", err)
- }
- // 创建处理器
- processor := services.NewTaskProcessor(
- utils.NewHttpClient(30*time.Second),
- cfg.Concurrency,
- )
- // 设置定时任务
- c := cron.New()
- _, err = c.AddFunc("@every "+cfg.Interval, func() {
- utils.Logger.Info("Starting scheduled task processing...")
- ctx, cancel := context.WithTimeout(context.Background(), 9*time.Minute)
- defer cancel()
- if err := processor.ProcessTasks(ctx); err != nil {
- utils.Logger.Error("Task processing failed: ", err)
- }
- })
- if err != nil {
- utils.Logger.Fatal("Failed to schedule task: ", err)
- }
- c.Start()
- utils.Logger.Info("Service started successfully")
- // 保持主进程运行
- select {}
- }
|