main.go 945 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // main.go
  2. package main
  3. import (
  4. "context"
  5. "go-policy-service/config"
  6. "go-policy-service/services"
  7. "go-policy-service/utils"
  8. "os"
  9. "os/signal"
  10. "syscall"
  11. "time"
  12. )
  13. func main() {
  14. ctx, stop := context.WithCancel(context.Background())
  15. defer stop()
  16. // 初始化配置
  17. cfg, err := config.LoadConfig()
  18. if err != nil {
  19. panic("Failed to load config: " + err.Error())
  20. }
  21. // 初始化日志
  22. utils.InitLogger(cfg.LogLevel)
  23. //初始化其他服务
  24. services.Initialize(cfg)
  25. // 创建处理器
  26. processor := services.NewTaskProcessor(
  27. utils.NewHttpClient(30*time.Second, cfg.IsSkipSSLVerify, cfg.ProxyUrl),
  28. cfg,
  29. )
  30. processor.Run(cfg)
  31. utils.Logger.Info("Service started successfully")
  32. // 注册优雅关闭
  33. sigCh := make(chan os.Signal, 1)
  34. signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
  35. select {
  36. case <-sigCh:
  37. utils.Logger.Info("Received shutdown signal")
  38. stop()
  39. utils.CloseResources()
  40. case <-ctx.Done():
  41. }
  42. }