[agent-go] 调通Executor的代码
This commit is contained in:
@@ -37,7 +37,6 @@ func INIT() *config.AgentServerInfo {
|
||||
// 建立RabbitMQ的连接
|
||||
// defer 关闭初始化连接
|
||||
initToServer, err := rabbitmq.NewRabbitMQConn(
|
||||
|
||||
initToServerProp,
|
||||
)
|
||||
if err != nil {
|
||||
@@ -45,14 +44,6 @@ func INIT() *config.AgentServerInfo {
|
||||
panic(err)
|
||||
}
|
||||
//defer rabbitmq.CloseChannel(initToServer)
|
||||
|
||||
initFromServer, err := rabbitmq.NewRabbitMQConn(
|
||||
initFromServerProp,
|
||||
)
|
||||
if err != nil {
|
||||
log.Error("init from server queue established error!")
|
||||
panic(err)
|
||||
}
|
||||
//defer rabbitmq.CloseChannel(initFromServer)
|
||||
|
||||
// 组装OctopusMessage
|
||||
@@ -61,11 +52,15 @@ func INIT() *config.AgentServerInfo {
|
||||
omType,
|
||||
agentServerInfo,
|
||||
)
|
||||
|
||||
msgBytes, err := json.Marshal(octopusMsg)
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("octopus message convert to json is wrong! msg is => %v", octopusMsg))
|
||||
}
|
||||
// 发送OM至MQ中O
|
||||
|
||||
log.Debug(fmt.Sprintf("Prepare to send init message to server! ==> %s", string(msgBytes)))
|
||||
|
||||
// 发送OM至MQ中
|
||||
rabbitmq.Send(
|
||||
initToServer,
|
||||
initToServerProp,
|
||||
@@ -73,47 +68,77 @@ func INIT() *config.AgentServerInfo {
|
||||
)
|
||||
|
||||
// 监听初始化连接中的信息
|
||||
initFromServer, err := rabbitmq.NewRabbitMQConn(
|
||||
initFromServerProp,
|
||||
)
|
||||
if err != nil {
|
||||
log.Error("init from server queue established error!")
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// 建立运行时RabbitMQ连接
|
||||
handleInitMsgFromServer(initFromServer, initFromServerProp, initToServer, initToServerProp)
|
||||
handleInitMsgFromServer(initFromServer, initFromServerProp, initToServer, initToServerProp, agentServerInfo)
|
||||
|
||||
return agentServerInfo
|
||||
}
|
||||
|
||||
// handleInitMsgFromServer 处理从Server接收的注册信息
|
||||
func handleInitMsgFromServer(initFromServer *rabbitmq.RabbitMQConn, initFromServerProp *rabbitmq.ConnectProperty, initToServer *rabbitmq.RabbitMQConn, initToServerProp *rabbitmq.ConnectProperty) {
|
||||
func handleInitMsgFromServer(initFromServer *rabbitmq.RabbitMQConn, initFromServerProp *rabbitmq.ConnectProperty, initToServer *rabbitmq.RabbitMQConn, initToServerProp *rabbitmq.ConnectProperty, agentServerInfo *config.AgentServerInfo) {
|
||||
|
||||
deliveries := rabbitmq.Read(initFromServer, initFromServerProp, false)
|
||||
|
||||
// 同步很多抢占注册的情况
|
||||
for delivery := range deliveries {
|
||||
forever := make(chan bool)
|
||||
|
||||
var om *config.OctopusMessage
|
||||
err := json.Unmarshal(delivery.Body, &om)
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("parse init message from server wroong, message is => %s ",
|
||||
string(delivery.Body)))
|
||||
go func() {
|
||||
|
||||
// 同步很多抢占注册的情况
|
||||
for delivery := range deliveries {
|
||||
|
||||
log.Debug(fmt.Sprintf("message received from server is %s", string(delivery.Body)))
|
||||
|
||||
var om *config.OctopusMessage
|
||||
err := json.Unmarshal(delivery.Body, &om)
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("parse init message from server wroong, message is => %s ",
|
||||
string(delivery.Body)))
|
||||
}
|
||||
|
||||
var serverInfo config.AgentServerInfo
|
||||
|
||||
s, _ := om.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
|
||||
|
||||
// 处理OM信息
|
||||
if om != nil && om.Type == g.InitOmType && serverName == agentServerInfo.ServerName {
|
||||
// 是本机的注册回复信息
|
||||
|
||||
// 建立运行时RabbitMQ连接
|
||||
// change to async
|
||||
go rabbitmq.HandleOMsg(om)
|
||||
|
||||
// 手动确认信息
|
||||
delivery.Ack(false)
|
||||
|
||||
// 手动关闭 注册队列的连接
|
||||
shutdownRegisterQueueConnection(initFromServer, initFromServerProp, initToServer, initToServerProp)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// 不是自身的 注册回复信息 -- 拒绝
|
||||
log.Warn(fmt.Sprintf("OctopusMessage INIT from server not this agent ! => %v, ==>%s", om, delivery.Body))
|
||||
delivery.Nack(false, true)
|
||||
}
|
||||
|
||||
// 处理OM信息
|
||||
if om.UUID == g.G.AgentServerInfo.AgentTopicName {
|
||||
// 是本机的注册回复信息
|
||||
}()
|
||||
|
||||
// 建立运行时RabbitMQ连接
|
||||
rabbitmq.HandleOMsg(om)
|
||||
|
||||
// 手动确认信息
|
||||
delivery.Ack(false)
|
||||
|
||||
// 手动关闭 注册队列的连接
|
||||
shutdownRegisterQueueConnection(initFromServer, initFromServerProp, initToServer, initToServerProp)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// 不是自身的 注册回复信息 -- 拒绝
|
||||
log.Warn(fmt.Sprintf("OctopusMessage INIT from server not this agent ! => %v", om))
|
||||
delivery.Nack(false, true)
|
||||
}
|
||||
// wait forever
|
||||
<-forever
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user