EMQX本地部署
一、MQTT简介
MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息协议,专为远程传感器和控制设备的网络通信设计,尤其是在低带宽、不可靠或者延迟较高的网络环境下。它由Andy Stanford-Clark(IBM)和Arlen Nipper(Eurotech)于1999年发明,旨在解决卫星通信中遇到的高延迟和低速问题。
MQTT的特点
- 轻量级:MQTT设计时考虑了低功耗和小内存占用,非常适合资源受限的设备使用。
- 发布/订阅模式:这种通信模式允许消息生产者(发布者)与消费者(订阅者)解耦,二者不需要直接知道对方的存在,通过主题(topics)进行沟通。
- 高效:MQTT在传输层使用TCP/IP协议,并且为了进一步减少网络负载,采用二进制格式编码,这使得它的开销比其他一些协议要小。
- 服务质量(QoS):MQTT支持三种不同的服务质量等级,确保消息可靠传递:0 - 最多一次、1 - 至少一次、2 - 恰好一次。
- 遗嘱消息:客户端可以在连接到服务器时定义一条遗嘱消息,当客户端异常断开连接时,服务器会将这条消息发送给相关的订阅者。
- 保留消息:如果一个主题设置了保留消息,则任何新的订阅者订阅该主题时都会立即收到这条消息。
应用场景
MQTT广泛应用于物联网(IoT)领域,比如智能家居、工业自动化、智能城市等。此外,由于其高效的通信机制,也适用于移动应用开发,特别是在需要保持长时间在线状态的应用中。
随着物联网的发展,MQTT已经成为事实上的标准之一,许多平台和服务都提供了对MQTT的支持,包括阿里云、AWS IoT、Microsoft Azure等。
二、EMQX公用服务器
在EMQX的服务中,在调试阶段,可以使用免费的公用的服务器进行调试,其具体的网址如下:Easy-to-Use Online MQTT Client | Try Now,但是公用服务器中因为使用者比较多,如果所设置的订阅和发布名称比较大众的话,容易接收到别人的数据。
登录之后的页面如下:
具体的使用教程文档链接如下:MQTT 协议快速入门 2025:基础知识和实用教程 | EMQ
三、EMQX本地化部署
在部署时,本案例使用的是腾讯云的服务器部署,支持的擦欧总系统和平台如下:
但是在部署的过程中,需要先将需要的端口打开,至于具体的需要打开那一个端口,可以去查找官方文档,每一个端口的作用,本文不详细说明了。
端口号 | 协议/用途 | 说明 |
---|---|---|
1883 | MQTT over TCP | 默认的非加密MQTT通信端口,用于设备或客户端通过TCP连接。 |
8883 | MQTT over SSL/TLS | 加密的MQTT通信端口,需配置SSL证书。 |
8083 | MQTT over WebSocket (WS) | 非加密的WebSocket端口,适用于浏览器等需要通过HTTP协议访问MQTT的场景。 |
8084 | MQTT over WebSocket Secure (WSS) | 加密的WebSocket端口,需SSL证书,适用于需要安全的浏览器通信场景。 |
18083 | HTTP API & 管理控制台 (Dashboard) | 用于访问EMQX的Web管理界面和REST API,默认账号 admin/public 。 |
4369 | Erlang Port Mapper (EPMD) | Erlang分布式节点通信端口,用于集群节点发现(仅在集群部署时需要)。 |
6370 | MQTT-SN (非加密) | MQTT-SN协议端口,适用于低功耗设备(如传感器网络)。 |
6369 | MQTT-SN over TLS | 加密的MQTT-SN端口,需SSL证书。 |
即在防火墙中释放一些端口:下面的端口可能不全,因为没有截全。
部署的教程如下:在 Ubuntu 上安装 EMQX | EMQX文档,在官方文档中有具体的配置内容,根据官方给的链接或者指令直接下载就行。
部署完成之后的登录页面如下:
登录后节目如下: