项目简介
本项目是基于Go语言开发的MQTT客户端,借助Go语言实现与MQTT协议的客户端连接。MQTT作为轻量级的发布/订阅消息协议,常用于机器对机器通讯,适用于物联网等场景。项目能帮助开发者以简单高效的方式连接MQTT服务器,实现消息的发布与订阅。
项目的主要特性和功能
- 简单易用:提供简洁API接口,便于开发者快速集成和使用。
- 高效稳定:利用Go语言的高并发特性,保障大量连接和消息传输时的稳定性与效率。
- 功能丰富:支持MQTT多种功能,如连接、断开、订阅、发布消息,以及设置QoS等级等。
- 安全性高:支持TLS/SSL加密连接,确保数据传输安全。
- 配置灵活:可自定义配置,如设置客户端ID、用户名、密码、主题等。
安装使用步骤
1. 安装依赖环境
确保已安装Go语言环境。
2. 部署RabbitMQ服务
使用以下命令一键拉起RabbitMQ:
bash
docker run -d --name rabbitmq --restart always -p 15672:15672 -p 5672:5672 -p 1883:1883 rabbitmq:3-management
- 端口说明:
- AMQP端口(默认5672
):用于AMQP协议。
- 管理界面端口(默认15672
):用于访问RabbitMQ的Web管理界面。
- MQTT端口(默认1883
):用于MQTT服务。
- 端口检查:
bash
telnet 127.0.0.1 5672
telnet 127.0.0.1 1883
- 访问管理界面:访问http://127.0.0.1:15672/#/
,默认账号密码为guest
/guest
。
3. 配置MQTT服务
- 启用MQTT插件:
bash docker exec -it rabbitmq /bin/bash rabbitmq-plugins enable rabbitmq_mqtt exit docker restart rabbitmq
- 配置账号密码:
bash rabbitmq-plugins enable rabbitmq_management rabbitmqctl add_user admin your_password rabbitmqctl set_user_tags admin administrator rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
请将your_password
替换为实际密码。
4. 运行Go代码
将以下代码保存为main.go
,并修改your-address
、your-port
、your-username
和your-password
为实际信息:
```go
package main
import ( "fmt" "os" "os/signal" "syscall"
)
func onMessageReceived(client MQTT.Client, message MQTT.Message) { fmt.Printf("Received message on topic: %s\n", message.Topic()) fmt.Printf("Message: %s\n", message.Payload()) }
func main() { // 创建 MQTT 连接参数 opts := MQTT.NewClientOptions().AddBroker("tcp://your-address:your-port") opts.SetClientID("go_client") opts.SetUsername("your-username") // 设置用户名 opts.SetPassword("your-password") // 设置密码
// 创建 MQTT 客户端实例
client := MQTT.NewClient(opts)
// 连接到 MQTT 代理
if token := client.Connect(); token.Wait() && token.Error() != nil {
panic(token.Error())
}
// 订阅主题
if token := client.Subscribe("test/topic", 0, onMessageReceived); token.Wait() && token.Error() != nil {
panic(token.Error())
}
fmt.Println("Connected to MQTT broker")
// 等待信号
sig := make(chan os.Signal, 1)
signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)
<-sig
// 断开连接
client.Disconnect(250)
fmt.Println("Disconnected from MQTT broker")
}
然后在终端执行以下命令运行代码:
bash
go run main.go
```
5. 验证连接
进入RabbitMQ的dashboard的Connections
标签页,可看到client_id
为go_client
的连接。也可使用MQTTX工具进行连接测试,注意rabbitmq
的dashboard账号密码
与MQTT
的账号密码
不同。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】