一、EMQ X简介
1. MQTT是什么
要想了解 EMQ ,首先要知道什么是 MQTT
-
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议):是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上
-
MQTT 优点:可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
2. EMQ X是什么
-
EMQX (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。
-
EMQ X 用于支持各种接入标准 MQTT 协议的设备,实现从设备端到服务器端的消息传递,以及从服务器端到设备端的设备控制和消息转发,从而实现物联网设备的数据采集和对设备的操作控制,目前广泛应用于全球物联网市场。
3. 为什么使用EMQ X
- 完整物联网协议支持,MQTT、MQTT-SN、CoAP、LwM2M、WebSocket 或私有协议支持
- 企业版单机能支持百万 MQTT 连接,集群能支持千万级别 MQTT 连接
- 易于安装和使用
- 灵活的拓展性,可支持企业定制场景
- 完全开源,用户可以查看所有源代码
二、安装EMQ X
- EMQ X 官网地址:https://www.emqx.io/zh
1. 下载安装
- EMQ X 下载地址:https://www.emqx.com/zh/downloads?product=broker
可以看到,这里下载的有两个版本,企业版和开源版,开源版可以免费使用,功能相对少些;企业版可以试用,长久使用需要交点米。我们这里选择开源版下载,选择好版本和系统,点击免费下载
这里给出了下载安装方法,直接根据参考下载安装即可
解压后如下:
这里讲一下一些重要的文件
bin --- emqx【启动相关】 --- emq_ctl【状态相关】 etc --- emqx.conf【配置相关】 --- plugins【插件相关】 log --- erlang.log.1【错误日志】
注:企业版要将License(emqx.key、emqx.lic)上传到etc文件夹下
解压后直接执行bin下的emqx文件即可,如果启动成功,会出现start successfully
提示字样
./emqx start
2. 启动常见问题
在启动的时候由于一些依赖版本问题,可能会出现一些错误,如果碰到了,可以通过查看错误日志,可以看到是如下报错:
经过查询资料,发现官网有相关解决方法:常见错误 | EMQ Docs (emqx.cn),是OPENSSL 版本不正确造成的,我们可以根据官网的提示进行操作
在执行make test
的时候,报如下错误,可以通过下面命令解决:
yum install perl-Test-Harness
在执行make install
的时候会报如下错误,经过查询资料,该错误并不会对启动造成影响,因此继续往下执行即可
3. 开放服务器端口
访问服务器的 emqx,需要开放18083 和1883 两个端口
# 开放18083端口(开放后需要要重启防火墙才生效)
firewall-cmd --zone=public --add-port=18083/tcp --permanent
# 1883(开放后需要要重启防火墙才生效)
firewall-cmd --zone=public --add-port=1883/tcp --permanent
# 重启防火墙
firewall-cmd --reload
添加服务器防火墙安全组规则:
4. 启动访问
根据官网解决启动异常问题后,最终启动成功,访问地址:http://8.129.125.48:18083/ ,使用初始用户名密码进行登录:admin,public
启动后,如果老是弹出URL Not Found
这个错误,这是因为management
的端口冲突造成的,在配置文件里面修改即可,这里修改为8093:
vim /usr/local/emqx-cento7-4.0.7/emqx/etc/plugins/emqx_management.conf
修改后,重启emq,使用默认账号进行登录,可以正常访问
三、常用命令
# 后台启动 EMQ X Broker
./emqx start
# 关闭 EMQ X Broker
./emqx stop
# 重启 EMQ X Broker
./emqx restart
# 使用控制台启动 EMQ X Broker
./emqx console
# 使用控制台启动 EMQ X Broker,与 emqx console 不同,emqx foreground 不支持输入 Erlang 命令
./emqx foreground
# Ping EMQ X Broker
./emqx ping
# 查看 EMQ X 的状态
./emqx_ctl status
评论