From 53d80c839ad2aad0a0482ca43fca1fc3a95b9d1c Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期五, 03 十一月 2023 17:30:54 +0800
Subject: [PATCH] 更改路由
---
main.go | 62 +++++++++++++++++++++++++-----
1 files changed, 51 insertions(+), 11 deletions(-)
diff --git a/main.go b/main.go
index 8c631f7..a12f0f4 100644
--- a/main.go
+++ b/main.go
@@ -2,6 +2,7 @@
import (
"apsClient/conf"
+ "apsClient/constvar"
"apsClient/crontask"
"apsClient/model"
"apsClient/nsq"
@@ -9,8 +10,10 @@
"apsClient/pkg/sqlitex"
"apsClient/router"
"apsClient/serf"
+ "apsClient/service"
"apsClient/service/plc_address"
"fmt"
+ "log"
"net/http"
"time"
)
@@ -30,6 +33,7 @@
// 鍚姩鏁版嵁鍚屾
var serfStartChan = make(chan bool)
+
// 闇�瑕佸悓姝ョ殑琛�
var syncTables = []string{
"procedures",
@@ -37,24 +41,44 @@
"production_progress",
"work_order",
"task_status_sync",
+ "device",
+ "device_plc",
+ "system_status",
}
agent := serf.InitAgent("apsClient", syncTables, sqlitex.GetDB())
agent.RegisterClusterEvent(serfClusterEvent)
+
go agent.Serve(serfStartChan)
- <-serfStartChan
+ if !<-serfStartChan {
+ logx.Errorf("serf Init err, exit")
+ return
+ }
+
+ //浠庢枃浠堕噷璇诲彇褰撳墠鐢熶骇璁惧id鑾峰彇璁惧鍒楄〃绗竴涓�
+ err := service.InitCurrentDeviceID()
+ if err != nil {
+ logx.Errorf("InitCurrentDeviceID error: %v, exit", err)
+ return
+ }
// 鍒ゆ柇褰撳墠闆嗙兢鐘舵��
+ logx.Infof("current agent.ClusterStatus:%v", agent.ClusterStatus)
+ log.Println("current agent.ClusterStatus:", agent.ClusterStatus)
+
+ conf.Conf.SerfClusterStatus = agent.ClusterStatus
+
if agent.ClusterStatus != "slave" {
if err := nsq.Init(); err != nil {
logx.Errorf("nsq Init err:%v", err)
return
}
- crontask.Once()
- if err := crontask.StartTask(); err != nil {
- logx.Errorf("crontab task Init err:%v", err)
- return
- }
+
+ }
+ crontask.Once(agent.ClusterStatus != "slave")
+ if err := crontask.StartTask(agent.ClusterStatus != "slave"); err != nil {
+ logx.Errorf("crontab task Init err:%v", err)
+ return
}
logx.Infof("apsClient start serve...")
@@ -68,21 +92,37 @@
}
func serfClusterEvent(stat int) {
+ ChangeClusterStatus(stat)
switch stat {
case serf.EventCreateCluster, serf.EventSlave2Master, serf.EventLeaveCluster:
- if err := nsq.Init(); err != nil {
+ if err := nsq.Init(); err != nil { //寮�鍚痭sq
logx.Errorf("nsq Init err:%v", err)
return
}
- crontask.Once()
- if err := crontask.StartTask(); err != nil {
+ crontask.Once(true)
+ if err := crontask.RestartTask(true); err != nil { //浠aster鏂瑰紡閲嶅惎task
logx.Errorf("crontab task Init err:%v", err)
return
}
case serf.EventJoinCluster, serf.EventMaster2Slave:
- nsq.Stop()
- crontask.StopTask()
+ nsq.Stop() //鍏抽棴nsq
+ crontask.Once(false)
+ if err := crontask.RestartTask(false); err != nil { //浠ラ潪master鏂瑰紡閲嶅惎task
+ logx.Errorf("crontab task Init err:%v", err)
+ return
+ }
}
logx.Infof("serf cluster event: %v", stat)
}
+
+func ChangeClusterStatus(stat int) {
+ switch stat {
+ case serf.EventSlave2Master, serf.EventCreateCluster:
+ conf.Conf.SerfClusterStatus = constvar.SerfClusterStatusMaster
+ case serf.EventLeaveCluster:
+ conf.Conf.SerfClusterStatus = constvar.SerfClusterStatusNull
+ case serf.EventJoinCluster, serf.EventMaster2Slave:
+ conf.Conf.SerfClusterStatus = constvar.SerfClusterStatusSlave
+ }
+}
--
Gitblit v1.8.0