[agent-go] 优化代码,完成连通性测试
This commit is contained in:
@@ -57,18 +57,18 @@ func INIT() *AgentServerInfo {
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("octopus message convert to json is wrong! msg is => %v", octopusMsg))
|
||||
}
|
||||
log.Debug(fmt.Sprintf("Prepare to send init message to server! ==> %s", string(msgBytes)))
|
||||
|
||||
// 发送OM至MQ中
|
||||
P.Submit(
|
||||
func() {
|
||||
for g.G.AgentHasRegister == false {
|
||||
|
||||
log.Debug(fmt.Sprintf("Send init message to server! ==> %s", string(msgBytes)))
|
||||
|
||||
//如果agent存活 而Server不存活 那么需要持续不断的向Server中发送消息
|
||||
initToServerQueue.Send(
|
||||
msgBytes,
|
||||
)
|
||||
|
||||
// 休眠
|
||||
time.Sleep(10 * time.Minute)
|
||||
|
||||
@@ -96,66 +96,57 @@ func handleInitMsgFromServer(initFromServerQueue *rabbitmq.RabbitQueue, initToSe
|
||||
|
||||
initOctopusMessageDeliveries := initFromServerQueue.Read(false)
|
||||
|
||||
forever := make(chan bool)
|
||||
// 同步很多抢占注册的情况
|
||||
for delivery := range initOctopusMessageDeliveries {
|
||||
|
||||
// use the ant goroutine pool
|
||||
P.Submit(
|
||||
func() {
|
||||
log.Debug(fmt.Sprintf("message received from server is %s", string(delivery.Body)))
|
||||
|
||||
// 同步很多抢占注册的情况
|
||||
for delivery := range initOctopusMessageDeliveries {
|
||||
var initOctopusMsg *rabbitmq.OctopusMessage
|
||||
err := json.Unmarshal(delivery.Body, &initOctopusMsg)
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("parse init message from server wroong, message is => %s ",
|
||||
string(delivery.Body)))
|
||||
}
|
||||
|
||||
log.Debug(fmt.Sprintf("message received from server is %s", string(delivery.Body)))
|
||||
var serverInfo AgentServerInfo
|
||||
|
||||
var initOctopusMsg *rabbitmq.OctopusMessage
|
||||
err := json.Unmarshal(delivery.Body, &initOctopusMsg)
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("parse init message from server wroong, message is => %s ",
|
||||
string(delivery.Body)))
|
||||
}
|
||||
s, _ := initOctopusMsg.Content.(string)
|
||||
cc := json.Unmarshal([]byte(s), &serverInfo)
|
||||
if cc != nil {
|
||||
log.Error(fmt.Sprintf("parse init message from server wroong, message is => %v ", cc))
|
||||
}
|
||||
serverName := serverInfo.ServerName
|
||||
|
||||
var serverInfo AgentServerInfo
|
||||
// 处理OM信息
|
||||
if initOctopusMsg != nil && initOctopusMsg.Type == g.InitOmType && serverName == agentServerInfo.ServerName {
|
||||
// 是本机的注册回复信息
|
||||
log.InfoF("OctopusMessage INIT from server is this agent !")
|
||||
|
||||
s, _ := initOctopusMsg.Content.(string)
|
||||
cc := json.Unmarshal([]byte(s), &serverInfo)
|
||||
if cc != nil {
|
||||
log.Error(fmt.Sprintf("parse init message from server wroong, message is => %v ", cc))
|
||||
}
|
||||
serverName := serverInfo.ServerName
|
||||
// 手动确认信息
|
||||
delivery.Ack(false)
|
||||
|
||||
// 处理OM信息
|
||||
if initOctopusMsg != nil && initOctopusMsg.Type == g.InitOmType && serverName == agentServerInfo.ServerName {
|
||||
// 是本机的注册回复信息
|
||||
// 修改系统参数
|
||||
g.G.AgentHasRegister = true
|
||||
|
||||
// 建立 运行时 RabbitMQ连接
|
||||
agentTopicName := initOctopusMsg.Result.(string)
|
||||
rabbitmq.BuildOMsgRuntimeConnectorQueue(agentTopicName)
|
||||
// 建立 运行时 RabbitMQ连接
|
||||
agentTopicName := initOctopusMsg.Result.(string)
|
||||
rabbitmq.BuildOMsgRuntimeConnectorQueue(agentTopicName)
|
||||
|
||||
// 手动确认信息
|
||||
delivery.Ack(false)
|
||||
// 手动关闭 注册队列的连接
|
||||
shutdownRegisterQueueConnection(initFromServerQueue, initToServerQueue)
|
||||
return
|
||||
}
|
||||
|
||||
// 手动关闭 注册队列的连接
|
||||
shutdownRegisterQueueConnection(initFromServerQueue, initToServerQueue)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// 不是自身的 注册回复信息 -- 拒绝
|
||||
log.Warn(fmt.Sprintf("OctopusMessage INIT from server not this agent ! => %v, ==>%s", initOctopusMsg, delivery.Body))
|
||||
delivery.Nack(false, true)
|
||||
}
|
||||
|
||||
},
|
||||
)
|
||||
|
||||
// wait forever
|
||||
<-forever
|
||||
// 不是自身的 注册回复信息 -- 拒绝
|
||||
log.Warn(fmt.Sprintf("OctopusMessage INIT from server not this agent ! => %v, ==>%s", initOctopusMsg, delivery.Body))
|
||||
delivery.Nack(false, true)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// shutdownRegisterQueueConnection 关闭初始化连接的两个队列
|
||||
func shutdownRegisterQueueConnection(initFromServerQueue *rabbitmq.RabbitQueue, initToServerQueue *rabbitmq.RabbitQueue) {
|
||||
|
||||
log.InfoF("Shutdown register queue connection !")
|
||||
}
|
||||
|
||||
func parseAgentServerInfo() *AgentServerInfo {
|
||||
|
||||
Reference in New Issue
Block a user