liuhaijun 3f5f28d785 add sheduling agent
Change-Id: I89f35fb3984044c57f10727432755012542f9fd8
2023-11-16 10:55:57 +00:00

59 lines
1.5 KiB
Go

package heartbeat
import (
"encoding/json"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/config"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/config/agent"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/internal/model/nats_msg_model"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/internal/nats_service/definition"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/internal/service/heartbeat_service"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/pkg/log"
natsClient "git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/pkg/nats-client"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/pkg/utils/randomutils"
"time"
)
var (
commonConfig = config.Config
)
func Strat() {
InitHeartBeatScheduler()
}
// InitHeartBeatScheduler
// 初始化 heartbeat 定时器
func InitHeartBeatScheduler() {
log.Infof("启动心跳服务")
// 每 30 秒钟时执行一次
randomNumber := randomutils.GetRandomNumber(-10, 10)
ticker := time.NewTicker(time.Duration(commonConfig.Schedule.HeartBeat+int64(randomNumber)) * time.Second) // 创建一个定时器
go func() {
for {
select {
case <-ticker.C:
doHeartBeatMQ()
}
}
}()
}
func doHeartBeatMQ() {
bytes, err := json.Marshal(heartbeat_service.AgentState)
if err != nil {
log.Infof("上报心跳信息序列化失败:%s", err)
return
}
msg := nats_msg_model.MsgModel{
Func: definition.HEALTHCHECK,
Body: bytes,
Version: "v1",
Rid: agent.Agent.RID,
}
marshal, _ := msg.Marshal()
log.Infof("上报心跳")
natsClient.Publish(definition.ToScheduleSubject, marshal)
}