zhangzengfei
2023-10-08 0bfb4e53db6d0cad8fe7a59945e86ac3adc7744e
main.go
@@ -6,7 +6,9 @@
   "apsClient/model"
   "apsClient/nsq"
   "apsClient/pkg/logx"
   "apsClient/pkg/sqlitex"
   "apsClient/router"
   "apsClient/serf"
   "apsClient/service/plc_address"
   "fmt"
   "net/http"
@@ -41,7 +43,27 @@
   ////提前加载任务
   //service.NewTaskService().GetTask()
   go shutdown()
   //go shutdown()
   // 启动数据同步
   var serfStartChan = make(chan bool)
   // 需要同步的表
   var syncTables = []string{
      "procedures",
      "process_model",
      "production_progress",
      "work_order",
   }
   agent := serf.InitAgent("apsClient", syncTables, sqlitex.GetDB())
   agent.RegisterClusterEvent(serfClusterEvent)
   go agent.Serve(serfStartChan)
   <-serfStartChan
   // 判断当前集群状态
   //agent.ClusterStatus == "master"
   logx.Infof("apsClient start serve...")
   server := &http.Server{
      Addr:         fmt.Sprintf(":%d", conf.Conf.System.Port),
@@ -60,3 +82,21 @@
   logx.Infof("apsClient exited...")
   os.Exit(0)
}
func serfClusterEvent(stat int) {
   switch stat {
   case serf.EventCreateCluster:
      // 创建集群
   case serf.EventJoinCluster:
      // 加入集群
   case serf.EventLeaveCluster:
      // 退出集群
   case serf.EventSlave2Master:
      // 切换为主节点
   case serf.EventMaster2Slave:
      // 切换为子节点
   }
   fmt.Println("clusterEvent:", stat)
}