package main import ( "iot-mqtt-gin/config" "iot-mqtt-gin/controllers" _ "iot-mqtt-gin/docs" "iot-mqtt-gin/mqtt" "iot-mqtt-gin/router" "iot-mqtt-gin/service" "log" ) // @title 物联网MQTT API // @version 1.0 // @description 物联网mqtt api接口 // @host 127.0.0.1:9999 // @BasePath /api/v1 // @schemes http https func main() { // 初始化MQTT客户端 mqttConfig := mqtt.Config{ Broker: config.MQTTBroker, ClientID: config.MQTTClientID, Username: config.MQTTUsername, Password: config.MQTTPassword, QoS: config.MQTTQoS, } mqttClient, err := mqtt.NewClient(mqttConfig) if err != nil { log.Fatalf("无法初始化MQTT客户端: %v", err) } defer mqttClient.Disconnect(250) // 连接到MQTT服务器 if err := mqttClient.Connect(); err != nil { log.Fatalf("连接到MQTT服务器失败: %v", err) } log.Println("成功连接到MQTT服务器") // 初始化TDengine连接 /*if err := db.InitTDengine(); err != nil { log.Fatalf("初始化TDengine失败: %v", err) return // 确保不执行后续DB操作 } defer db.Close()*/ // 初始化MQ服务 mqService := service.NewMQService() defer mqService.Close() // 初始化生产者 nsqProducer, _, _, err := mqService.InitProducers() if err != nil { log.Fatalf("初始化生产者失败: %v", err) } defer nsqProducer.Close() //defer kafkaProducer.Close() //defer rabbitProducer.Close() // 初始化消费者 /*if err := mqService.InitConsumers(); err != nil { log.Fatalf("初始化消费者失败: %v", err) }*/ // 启动消费 //mqService.StartConsuming() // 初始化所有控制器 mqttUserCtrl := controllers.NewMqttuserController() deviceCtrl := controllers.NewDeviceController(mqttClient, nsqProducer) switchCtrl := controllers.NewSwitchController() productCtrl := controllers.NewProductController() // 设置MQTT消息处理 mqttClient.SetMessageHandler(deviceCtrl.HandleMQTTMessage) //引入路由 r := router.SetupRouter(mqttUserCtrl, deviceCtrl, switchCtrl, productCtrl) r.Run(":9999") }