windows10-EMQX与MQTTX的安装及配置使用教程_emqx安装-CSDN博客
选择 MQTT Broker 时,可以考虑以下因素来决定是使用 Mosquitto 还是 EMQX:
1. Mosquitto
优点:
- 轻量级:Mosquitto 是一个非常轻量的 MQTT broker,资源占用低,非常适合嵌入式设备、小型项目或个人使用。
- 简单易用:配置简单,易于部署和管理。对于基础的 MQTT 功能,它足够强大且易于集成。
- 广泛支持:Mosquitto 被广泛使用,社区支持良好,有大量的文档和教程。
缺点:
- 功能有限:Mosquitto 提供的功能比较基础,对于大规模设备连接、高级管理和监控功能的支持有限。
- 可扩展性:在处理大规模并发连接或需要企业级功能时,Mosquitto 的性能和功能可能不够用。
适用场景:
- 适合资源受限的环境、小型到中型的 IoT 项目。
- 如果你的项目是一个中小型的 IoT 系统,且不需要复杂的企业级功能,Mosquitto 是一个非常好的选择。
2. EMQX
优点:
- 高性能:EMQX 以高并发和高吞吐量著称,能够处理大量的设备连接,适合大规模 IoT 部署。
- 丰富功能:支持高级的 MQTT 功能(如共享订阅、WebSocket 支持、规则引擎、分布式集群等),并且有内置的认证、授权和监控功能。
- 企业级支持:提供商业版本(EMQX Enterprise),包含更多的企业级功能,如高可用性、跨数据中心同步等。
缺点:
- 复杂性:功能强大的同时也意味着配置和管理的复杂性较高,可能需要更多的学习和设置时间。
- 资源占用:相比 Mosquitto,EMQX 对硬件资源的需求更高,适合部署在更强大的服务器上。
适用场景:
- 适合需要高并发、高可用性的大规模 IoT 系统。
- 如果你的项目涉及成千上万的设备连接、需要复杂的消息路由、或者企业级的稳定性和可扩展性,EMQX 是一个更好的选择。
总结建议:
- 如果你需要一个轻量、易用的 MQTT broker,且项目规模不大,Mosquitto 是一个很好的选择。
- 如果你的项目涉及大规模设备、需要高性能和高可用性,或者你有企业级需求,EMQX 可能更适合。
根据你的项目需求和未来的扩展考虑,做出最适合的选择。
paho-mqtt
库仅提供了 MQTT 客户端的功能,而 MQTT 需要一个 MQTT 服务器(也叫做 MQTT broker)来进行消息的中转和发布/订阅的管理。
1. 部署 MQTT 服务器(Broker)
你需要部署一个 MQTT 服务器,常用的 MQTT broker 有以下几种选择:
- Eclipse Mosquitto:一个轻量级且流行的开源 MQTT broker,适用于大多数应用场景。
- HiveMQ:一个企业级的 MQTT broker,提供更多功能和扩展性。
- EMQX:一个高性能、高可用性的开源 MQTT broker,支持大规模设备连接。
- RabbitMQ:虽然它主要是一个消息队列系统,但它也支持 MQTT 协议。
2. 部署 Eclipse Mosquitto 作为 MQTT Broker
Linux/MacOS:
-
安装 Mosquitto:
对于大多数 Linux 发行版,Mosquitto 可以通过包管理器直接安装。例如,在 Ubuntu 上:
sh复制代码
sudo apt-get update sudo apt-get install mosquitto mosquitto-clients
对于 macOS 用户,可以使用 Homebrew 安装:
sh复制代码
brew install mosquitto
-
启动 Mosquitto:
安装后,可以通过以下命令启动 Mosquitto 服务:
sh复制代码
sudo systemctl start mosquitto sudo systemctl enable mosquitto
在默认配置下,Mosquitto 会监听在
1883
端口上,这是 MQTT 的默认非加密端口。 -
配置 Mosquitto(可选):
你可以在
/etc/mosquitto/mosquitto.conf
文件中配置 Mosquitto,例如设置认证、SSL/TLS 加密、日志级别等。
Windows:
-
下载 Mosquitto:
从 Mosquitto 官网 下载适用于 Windows 的安装包。
-
安装 Mosquitto:
按照下载包中的指示安装 Mosquitto。安装完成后,你可以通过命令行进入 Mosquitto 的安装目录,并运行以下命令启动 broker:
cmd复制代码
mosquitto
默认情况下,Mosquitto 也会监听
1883
端口。
3. 测试 MQTT Broker
你可以使用 Mosquitto 客户端工具来测试 MQTT Broker 是否正常工作。例如,可以使用以下命令在命令行中发布和订阅消息:
-
发布消息:
sh复制代码
mosquitto_pub -h localhost -t "test/topic" -m "Hello MQTT"
-
订阅消息:
sh复制代码
mosquitto_sub -h localhost -t "test/topic"
如果一切正常,订阅端会收到发布端发送的消息。
4. 配置客户端连接到 MQTT Broker
在你的客户端代码中(例如 ModbusMqttManager.cpp
),你需要将 MQTT broker 的地址设置为你部署的服务器地址。例如:
cpp
复制代码
ModbusMqttManager manager("tcp://localhost:1883", "client_id");
如果你在远程服务器上部署了 MQTT broker,需要将 localhost
替换为该服务器的 IP 地址或域名。
5. 远程或云端 MQTT Broker 选项(可选)
如果你不希望自己部署 MQTT broker,还可以使用一些云服务提供的 MQTT broker,例如:
- HiveMQ Cloud
- AWS IoT Core
- Microsoft Azure IoT Hub
这些云服务通常提供更高的可用性、扩展性,并支持全球范围的设备连接。
总结
- Mosquitto 部署:最简单的 MQTT broker 部署方式,适合小型项目或本地测试。
- 云端 MQTT 服务:适合需要高可用性和大规模部署的项目。
- 客户端配置:客户端需要连接到你部署或选择的 MQTT broker。
通过这些步骤,你可以完成从客户端到服务器端的整个 MQTT 环境配置,从而实现 Modbus 数据的发布/订阅功能。
相关资源
- paho-mqtt C 库的 GitHub 地址:eclipse/paho.mqtt.c
- paho-mqtt C++ 库的 GitHub 地址:eclipse/paho.mqtt.cpp
- paho-mqtt 官方文档:Paho MQTT C/C++ documentation