EMQX 介绍

EMQX 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。而 MQTT 实际上是一种应用层协议,用于实现轻量的、发布订阅式的物联网消息协议。事实上,虽然 EMQX 的定位是物联网消息协议 MQTT 的 broker,但是它的处理能力已经超过了它的定义。而在之后的文章中,我们会为读者介绍使用 EMQX 来实现 IM 的推送系统。

本文受限于篇幅,不介绍 MQTT 协议

安装 EMQX

这里为了方便起见,我们只介绍压缩包安装,也方便利用我们前面所提到的 Centos 集群发布机制,

压缩包安装

首先我们打开下面的网站,

https://www.emqx.com/zh/try?product=broker

然后我们选择我们对应的版本信息,然后下载压缩包即可,下载完成后进行解压即可,

unzip emqx-4.4.2-otp24.1.5-3-el7-amd64.zip

emqx 目录结构如下:

emqx/
├── bin # 可执行文件的位置
├── data # 存放数据的位置
├── dynlibs
├── erts-12.1.5
├── etc # 配置文件位置及插件配置文件位置
├── lib
├── log # 日志存放位置
└── releases

添加到全局环境变量(可选)

如果读者不太了解 Centos 的环境变量怎么配置,则可以使用下面的脚本修改执行即可,

export EMQX_HOME=#读者 EMQX 的安装位置
echo "PATH=\$PATH:$EMQX_HOME\bin" > /etc/profile.d/my_emqx.sh

比如读者的 EMQX 安装位置为 /opt/module/emqx,则对应脚本替换如下,

export EMQX_HOME=/opt/module/emqx
echo "PATH=\$PATH:$EMQX_HOME/bin" > /etc/profile.d/my_emqx.sh

接下来就是让环境变量生效即可,

source /etc/profile

启停命令使用

对于中间件,我们上手的使用方法肯定无非就是启动,停止,重启啦。

如果读者没有添加环境变量,那么之后的执行命令,读者都应该以绝对或者相对路径来指明 emqx 可执行文件的位置,譬如下列命令,

./emqx start/opt/module/emqx/bin/emqx start

下面我们尝试启动 emqx,

emqx start

启动成功后,应该看到输出包含以下内容,

EMQ X Broker x.x.x is started successfully!

当修改了配置文件或者其他原因需要重新启动 EMQX 时,使用以下命令,

emqx restart

重启成功后,应该看到输出包含以下内容,

EMQ X Broker 4.4.2 is stopped: ok
EMQ X Broker 4.4.2 is started successfully!

如果要停止 emqx,可以使用以下命令,

emqx stop

控制台使用

在启动了 emqx 后,我们可以通过访问 18083 端口来使用控制台,

EMQX REST API 教程_客户端

其默认的账号密码为 admin 和 public。

进入到 EMQX 后,我们可以首先将语言改为中文,

EMQX REST API 教程_中间件_02

下面我们来介绍一下 EMQX dashboard 的各项功能吧。

  • 监控:查看当前运行节点的各项指标
  • 客户端:查看已经连接的客户端
  • 主题:查看当前活动的主题
  • 订阅:查看当前的客户端与主题的订阅情况
  • 规则引擎:用SQL构建用于消息流的实时处理,本文不做介绍
  • 统计分析:主题的消息流入流出统计信息
  • 插件:这里提供了许多 EMQX 的附加功能,本文后续将会使用其中几个插件
  • 模块
  • 工具:主要包含 EMQX HTTP API 和 WebSocket 即时功能,其中 WebSocket 是一个基于浏览器的 MQTT 客户端工具
  • 告警:用于显示一些威胁到 EMQX 稳定运行的事件,比如主机剩余内存告急,CPU 荷载过高等信息。
  • 通用:这里包含一些用户管理相关功能,一些端口使用的有效信息。

MQTTX 客户端

有了 MQTT broker 还不够,我们还需要一个好用的 MQTT Client,那么这个这里推荐官方提供的客户端 MQTTX,

https://mqttx.app/zh

安装完成后,界面如下所示,使用方法非常简单,点击左侧 + 按钮,即可创建连接,


EMQX REST API 教程_客户端_03

其连接的高级功能本文不做介绍,里面涉及一些 MQTT 协议的内容,如果读者了解 MQTT 协议,自然理解里面的一些设置的含义。

连接

作者使用它来连接到本地的 192.168.100.100 虚拟机中的 EMQX,


EMQX REST API 教程_环境变量_04

点击连接后,如果连接成功将会显示如下的内容,


EMQX REST API 教程_中间件_05

订阅与发布

现在我们再创建一个连接,用来测试之后的订阅与发布功能。现在我们两个连接都已经连接上了 EMQX,


EMQX REST API 教程_后端_06

我们通过“添加订阅”功能为两个连接添加同一个订阅,


EMQX REST API 教程_后端_07

现在我们通过其中一个连接给主题 test- topic 发送消息,


EMQX REST API 教程_EMQX REST API 教程_08

我们可以看到另一个连接接收到了新的消息,


EMQX REST API 教程_客户端_09

至此有关 MQTTX 的介绍到此为止。