JCC-CSScheduler/advisor/main.go

93 lines
2.2 KiB
Go

package main
import (
"fmt"
"os"
"time"
"gitlink.org.cn/cloudream/common/pkgs/logger"
"gitlink.org.cn/cloudream/scheduler/advisor/internal/config"
myglbs "gitlink.org.cn/cloudream/scheduler/advisor/internal/globals"
"gitlink.org.cn/cloudream/scheduler/advisor/internal/reporter"
"gitlink.org.cn/cloudream/scheduler/advisor/internal/scheduler"
"gitlink.org.cn/cloudream/scheduler/advisor/internal/services"
"gitlink.org.cn/cloudream/scheduler/advisor/internal/task"
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
advmq "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/advisor"
)
func main() {
err := config.Init()
if err != nil {
fmt.Printf("init config failed, err: %s", err.Error())
os.Exit(1)
}
err = logger.Init(&config.Cfg().Logger)
if err != nil {
fmt.Printf("init logger failed, err: %s", err.Error())
os.Exit(1)
}
schglb.InitMQPool(&config.Cfg().RabbitMQ)
myglbs.Init()
rpter := reporter.NewReporter(myglbs.AdvisorID, time.Second*time.Duration(config.Cfg().ReportIntervalSec))
schSvc := scheduler.NewService(scheduler.NewDefaultSchedule())
taskMgr := task.NewManager(rpter, schSvc)
mqSvr, err := advmq.NewServer(services.NewService(&taskMgr), &config.Cfg().RabbitMQ)
if err != nil {
logger.Fatalf("new advisor server failed, err: %s", err.Error())
}
mqSvr.OnError(func(err error) {
logger.Warnf("advisor server err: %s", err.Error())
})
// 启动服务
go serveMQServer(mqSvr)
go serveReporter(rpter)
go serveScheduleService(schSvc)
forever := make(chan bool)
<-forever
}
func serveMQServer(server *advmq.Server) {
logger.Info("start serving mq server")
err := server.Serve()
if err != nil {
logger.Errorf("mq server stopped with error: %s", err.Error())
}
logger.Info("mq server stopped")
}
func serveReporter(rpt *reporter.Reporter) {
logger.Info("start serving reporter")
err := rpt.Serve()
if err != nil {
logger.Errorf("rpt stopped with error: %s", err.Error())
}
logger.Info("rpt stopped")
}
func serveScheduleService(svc *scheduler.Service) {
logger.Info("start serving scheduler service")
err := svc.Serve()
if err != nil {
logger.Errorf("scheduler service with error: %s", err.Error())
}
logger.Info("scheduler service stopped")
}