main.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "github.com/gin-gonic/gin"
  6. "go.uber.org/zap"
  7. "lzyd-message-api/common"
  8. "lzyd-message-api/models"
  9. "lzyd-message-api/router"
  10. "lzyd-message-api/wrapper"
  11. "os"
  12. "path"
  13. "time"
  14. "github.com/TingYunAPM/go"
  15. )
  16. func main() {
  17. models.MemoryCacheVar = new(models.MemoryCache)
  18. models.MemoryCacheVar.Items = make(map[string]*models.Item)
  19. //初始化tingyun: 应用名称、帐号等在tingyun.json中配置
  20. tingyun.AppInit("tingyun.json")
  21. defer tingyun.AppStop()
  22. //原有业务逻辑
  23. var err error
  24. fPath, _ := os.Getwd()
  25. fPath = path.Join(fPath, "conf")
  26. configPath := flag.String("c", fPath, "config file path")
  27. flag.Parse()
  28. err = common.LoadConfigInformation(*configPath)
  29. if err != nil {
  30. return
  31. }
  32. // 先启动MQTT服务
  33. go StartMQTTServer()
  34. if common.ServerInfo.Mode == "debug" {
  35. gin.SetMode(gin.DebugMode)
  36. } else if common.ServerInfo.Mode == "release" {
  37. gin.SetMode(gin.ReleaseMode)
  38. }
  39. defer func() {
  40. _ = wrapper.Logger.Sync()
  41. }()
  42. //router init
  43. r := router.InitRouter()
  44. server := common.ServerInfo
  45. serverInfo := server.Host + ":" + server.Port
  46. // restart
  47. wrapper.Logger.Info("server start info: " + serverInfo)
  48. err = r.Run(serverInfo)
  49. if err != nil {
  50. wrapper.Logger.Error("server start failed: " + err.Error())
  51. }
  52. }
  53. func StartMQTTServer() {
  54. clientId := common.MQTTClientPrefixServ + "-" + time.Now().Format("20060102150405")
  55. common.MQTTClient = wrapper.NewClient(common.MqttServerUrl, common.MqttUserName, common.MqttPassword, clientId)
  56. common.MQTTClient.SetQOS(byte(common.MqttQos))
  57. common.MQTTClient.SetkeepAliveInterval(time.Second * 30)
  58. common.MQTTClient.SetPingTimeout(time.Second * 1)
  59. //Start the MQTT client.
  60. err := common.MQTTClient.Start()
  61. if err != nil {
  62. fmt.Printf("MQTT启动失败: %s \n", err.Error())
  63. }
  64. err = common.MQTTClient.Subscribe(common.MqttServerTopic, func(topic string, msg *wrapper.Message) {
  65. //services.MqttMessageHandler(msg)
  66. })
  67. if err != nil {
  68. wrapper.Logger.Info("[MQTT]订阅失败", zap.String("error", err.Error()))
  69. } else {
  70. wrapper.Logger.Info("[MQTT]订阅成功", zap.String("topic", common.MqttServerTopic))
  71. }
  72. }