| | |
| | | "apsClient/model" |
| | | "apsClient/nsq" |
| | | "apsClient/pkg/logx" |
| | | "apsClient/pkg/sqlitex" |
| | | "apsClient/router" |
| | | "apsClient/serf" |
| | | "apsClient/service/plc_address" |
| | | "fmt" |
| | | "net/http" |
| | |
| | | ////提前加载任务 |
| | | //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), |
| | |
| | | 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) |
| | | } |