package main import ( "flag" "fmt" "github.com/gin-gonic/gin" "go.uber.org/zap" "lzyd-message-api/common" "lzyd-message-api/models" "lzyd-message-api/router" "lzyd-message-api/wrapper" "os" "path" "time" "github.com/TingYunAPM/go" ) func main() { models.MemoryCacheVar = new(models.MemoryCache) models.MemoryCacheVar.Items = make(map[string]*models.Item) //初始化tingyun: 应用名称、帐号等在tingyun.json中配置 tingyun.AppInit("tingyun.json") defer tingyun.AppStop() //原有业务逻辑 var err error fPath, _ := os.Getwd() fPath = path.Join(fPath, "conf") configPath := flag.String("c", fPath, "config file path") flag.Parse() err = common.LoadConfigInformation(*configPath) if err != nil { return } // 先启动MQTT服务 go StartMQTTServer() if common.ServerInfo.Mode == "debug" { gin.SetMode(gin.DebugMode) } else if common.ServerInfo.Mode == "release" { gin.SetMode(gin.ReleaseMode) } defer func() { _ = wrapper.Logger.Sync() }() //router init r := router.InitRouter() server := common.ServerInfo serverInfo := server.Host + ":" + server.Port // restart wrapper.Logger.Info("server start info: " + serverInfo) err = r.Run(serverInfo) if err != nil { wrapper.Logger.Error("server start failed: " + err.Error()) } } func StartMQTTServer() { clientId := common.MQTTClientPrefixServ + "-" + time.Now().Format("20060102150405") common.MQTTClient = wrapper.NewClient(common.MqttServerUrl, common.MqttUserName, common.MqttPassword, clientId) common.MQTTClient.SetQOS(byte(common.MqttQos)) common.MQTTClient.SetkeepAliveInterval(time.Second * 30) common.MQTTClient.SetPingTimeout(time.Second * 1) //Start the MQTT client. err := common.MQTTClient.Start() if err != nil { fmt.Printf("MQTT启动失败: %s \n", err.Error()) } err = common.MQTTClient.Subscribe(common.MqttServerTopic, func(topic string, msg *wrapper.Message) { //services.MqttMessageHandler(msg) }) if err != nil { wrapper.Logger.Info("[MQTT]订阅失败", zap.String("error", err.Error())) } else { wrapper.Logger.Info("[MQTT]订阅成功", zap.String("topic", common.MqttServerTopic)) } }