一、什么是EMQX
EMQX是一个开源的、高性能的MQTT消息服务器,支持多种MQTT协议版本和QoS等级,能够在分布式环境下扩展数百万连接。它采用了Erlang语言和OTP平台开发,这些技术以其可靠性、容错性和并发处理能力而著称,确保了系统的高可用性和稳定性。
EMQX提供了丰富的API接口和管理工具,方便用户进行开发和管理。它完全遵循Apache License 2.0开源协议,允许用户自由修改和分发源代码。由于其出色的性能和扩展性,EMQX被广泛应用于物联网(IoT)、智能家居、智慧城市等领域。
EMQX不仅支持MQTT协议,还支持其他物联网协议如CoAP、LwM2M等,并且可以与各种数据库和消息队列系统集成,比如通过插件实现数据持久化到关系型数据库或NoSQL数据库,或者桥接转发消息到Kafka、RabbitMQ等。
EMQX有多个版本,包括开源版EMQX Broker,企业版EMQX Enterprise以及针对超大型IoT网络和应用设计的EMQX Platform。每个版本在支持的连接数量、功能特性和商业服务方面有所不同,以满足不同规模和需求的用户。
Github地址: https://github.com/emqx/emqx
二、EMQX有什么用
EMQX 是一个专门设计用于物联网(IoT)通信的开源消息服务器,主要用于处理大规模设备之间的实时消息传输。它基于 MQTT(Message Queuing Telemetry Transport)协议以及其他支持的物联网协议(如 CoAP、LwM2M等),能够高效、可靠地在分布式环境中扩展至数百万的并发连接。以下是 EMQX 的主要用途和特点:
主要用途
- 物联网设备通信:EMQX 支持通过MQTT协议进行设备与服务器之间的双向通信,适合于智能家居、智慧城市、工业互联网等多种应用场景。
- 数据采集与监控:可以用来收集传感器数据,并将其转发到后端系统进行处理或存储,适用于需要远程监控和管理的场景。
- 消息路由和转发:EMQX 可以作为中间件,将来自不同设备的消息路由到相应的服务或者应用中去,实现复杂的消息分发逻辑。
- 高可用性和可扩展性:针对大规模物联网部署,EMQX 提供了集群功能,确保系统的高可用性以及水平扩展能力。
特点
高性能:采用Erlang语言开发,具有优秀的并发处理能力和低延迟特性。
多协议支持:除了MQTT之外,还支持CoAP、LwM2M等物联网协议。
丰富的插件生态:可以通过插件扩展EMQX的功能,比如增强安全性、集成第三方服务等。
易用性:提供直观的管理界面和详细的文档,便于用户快速上手。
开放源代码:遵循Apache License 2.0开源协议,允许自由修改和分发。
全新物联网数据集成:
总之,EMQX 是为了解决物联网领域内设备间通信的需求而生,特别适用于需要处理大量并发连接和实时数据传输的应用场景。
三、安装EMQX
EMQX 支持多种安装方式,比如容器化部署,通过 EMQX Kubernetes Operator 安装部署、或通过安装包的形式部署在物理服务器或虚拟机上,针对安装包部署形式,目前支持以下操作系统:
- RedHat
- CentOS
- RockyLinux
- AmazonLinux
- Ubuntu
- Debian
- macOS
- Linux
Docker容器运行
- 容器化部署是体验 EMQX 的最快方式。
- 1、在命令行工具中输入如下命令,下载并运行最新版 EMQX。
- 运行此命令前,请确保 Docker 已安装且已启动。
1 | # 启动emqx |
- MQTT 协议端口
- 1883:这是 MQTT 协议的标准端口,用于非加密的 MQTT 连接。
- 8883:这是 MQTT+SSL(MQTTS)的标准端口,用于加密的 MQTT 连接,提供更高的安全性。
- WebSocket 端口
- 8083:通过 WebSocket 进行 MQTT 通信的端口,默认使用非加密连接。通常用于浏览器客户端通过 WebSocket 协议与 EMQX 服务器进行通信。
- 8084:类似于 8083,但是使用了 SSL 加密,即 WSS(WebSocket Secure),为 WebSocket 通信提供了安全层。
- Dashboard 和 API 端口
- 18083:这是 EMQX 的 Dashboard 管理界面以及 HTTP API 的默认端口。你可以通过这个端口访问 EMQX 提供的 Web 管理界面来监控和管理你的 MQTT 服务。此外,EMQX 提供的 RESTful API 也通过这个端口提供服务。
- 命令运行示例图如下:
- 2、通过浏览器访问 http://localhost:18083/(localhost 可替换为您的实际 IP 地址)以访问 EMQX Dashboard 管理控制台,进行设备连接与相关指标监控管理。
- 默认用户名及密码:
admin
与public
- 重新设置密码
- 首页面板
配置用户
- 如上,已经是安装完成了,可以使用了,但是默认是没有添加客户端认证的,不安全所有知道地址的都可以进行访问。
- 所以我们可以配置客户端认证
- 添加用户之后我们就需要登录用户名密码才能访问了
- 可以下载MQTTX客户端,进行消息的发送与接收测试
四、总结
- 随着物联网技术的发展,EMQX 将在更多场景中发挥重要作用。无论是智能家居、工业自动化还是智慧城市,EMQX 都能提供可靠的消息传输服务和数据集成能力。希望本文能够帮助您顺利入门 EMQX,并在实际项目中加以应用。