Files
---iot/main.go

77 lines
2.0 KiB
Go

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")
}