77 lines
2.0 KiB
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")
|
|
}
|