文章目录
- 一、MQTT
- 1.MQTT 的特点
- 2.MQTT 的工作原理
- 3.MQTT 的应用场景
- 二、EMQX(服务端)
- 1.EMQX 的特点
- 2.安装
- 三、客户端
- 1.MQTTX
- 2.EMQX后台建客户端
- 3.H5页面客户端
- 4.Spring Boot集成mqtt做客户端
一、MQTT
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种轻量级的消息传输协议,设计用于在低带宽、高延迟或不可靠的网络连接下,实现设备之间的通信。MQTT 协议最初由 IBM 在 1999 年开发,现在已经成为物联网(IoT)领域广泛使用的通信协议之一。
1.MQTT 的特点
- 发布/订阅模式:MQTT 使用发布/订阅消息模式,允许客户端发布消息到主题(topics),并订阅感兴趣的主题。这种模式解耦了发布者和订阅者,使得系统更加灵活和可扩展。
- 轻量级:MQTT 协议的设计目标是简单和高效,具有较小的消息开销,适用于资源受限的设备,如传感器和嵌入式系统。
- QoS 级别:MQTT 支持不同的服务质量(QoS)级别,包括“最多一次”(At most once)、“至少一次”(At least once)和“正好一次”(Exactly once),以满足不同的可靠性需求。
- 保留消息:MQTT 允许发布保留消息,这些消息在订阅者连接时会立即发送,确保订阅者能够获取最新的状态信息。
- 离线消息:MQTT 代理可以保存订阅者的离线消息,并在订阅者重新连接时发送给它们。
2.MQTT 的工作原理
MQTT 网络由 MQTT 代理(broker)和 MQTT 客户端组成。
- MQTT 代理(Broker):负责接收来自客户端的消息,并将这些消息转发给订阅了相应主题的客户端。代理是消息的中心枢纽,管理主题订阅和消息分发。
- MQTT 客户端(Client):可以连接到代理,发布消息到主题,以及订阅感兴趣的主题以接收消息。客户端可以是设备、传感器、应用程序等。
3.MQTT 的应用场景
- 物联网(IoT):在物联网中,MQTT 广泛用于设备之间的通信,实现设备状态监控、远程控制、数据采集等功能。
- 移动应用:MQTT 适用于移动应用,因为它具有低带宽和低功耗的特点,可以减少数据使用并延长电池寿命。
- 实时通信:在需要实时数据传输的场景中,如股票市场、社交网络更新等,MQTT 可以提供快速的消息传递。
- 远程监控和自动化:在工业自动化、智能家居、远程监控等领域,MQTT 用于设备之间的通信和控制。
二、EMQX(服务端)
EMQX 是一个高性能的 MQTT 消息服务器,由 EMQ(上海创센智能科技有限公司)开发。EMQX 旨在提供一个可扩展、高可用和易于管理的 MQTT broker,适用于大规模物联网应用。
1.EMQX 的特点
- 高性能:EMQX 能够处理大量的并发连接和高吞吐量的消息传输,适用于大规模物联网部署。
- 可扩展性:支持集群模式,可以水平扩展以应对不断增加的负载。
- 安全性:提供多种安全功能,包括TLS/SSL 加密、访问控制、认证授权等,保护数据传输和系统安全。
- 灵活性:支持多种消息协议,除了 MQTT 之外,还支持 HTTP、CoAP、LwM2M 等,满足不同设备和应用的需求。
- 管理工具:提供丰富的管理工具和API,方便监控、管理和集成到现有系统中。
- 云原生支持:EMQX 适合在容器化和云环境中部署,支持 Kubernetes 等容器编排工具。
2.安装
这里我用的是windows版本
参考:
https://blog.csdn.net/xiaolong1126626497/article/details/134280836
https://blog.csdn.net/qq_37165235/article/details/138193161
windows版本: 链接: https://pan.baidu.com/s/1_uYkOz76tWEm99MmxHyOdg?pwd=2vsg 提取码: 2vsg
安装好后访问 ip:18083 即可进入后台如下图所示:
三、客户端
1.MQTTX
这个是EMQX官方的客户端工具
下载地址 https://mqttx.app/zh
安装后配置好即可连接到前面安装的emqx服务器,如下图所示
2.EMQX后台建客户端
如下图所示,在后台也可以直接建立客户端连接,测试发布订阅
3.H5页面客户端
参考:
https://blog.csdn.net/qq_37165235/article/details/138193161
项目地址:https://gitee.com/neil-xu/mqtt-test-html.git
效果:
4.Spring Boot集成mqtt做客户端
参考:
https://blog.csdn.net/qq_42862247/article/details/125536672?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-125536672-blog-144117489.235v43pc_blog_bottom_relevance_base6&spm=1001.2101.3001.4242.1&utm_relevant_index=3
项目地址:https://gitee.com/neil-xu/mqtt-demo.git
效果: