一、Mqtt服务器EMQX的安装使用

1. 关于杭州 EMQ 科技公司

    EMQ X是中国杭州一家科技公司(公司名叫EMQ)发布的面向5G和物联网市场的消息与流处理开源软件。公司创始团队主要来自华为、IBM、亚马逊和苹果,并坚定支持软件开源。难得难得,2013年,EMQ 作为一个开源项目在Github上发布,目前已成为全球市场广泛应用的开源MQTT消息服务器。

    EMQ X Broker是其完全开放源码的发布订阅模式一款mqtt服务器,基于高并发的 Erlang/OTP 语言平台开发,支持百万级连接和分布式集群架构。MQTT5.0 支持、高并发低时延、扩展模块与插件、跨平台安装部署,在全球物联网市场广泛应用。无论是产品原型设计、物联网创业公司、还是大规模的商业部署,EMQ X Broker 都支持开源免费使用。

2. Emqx下载软件

    进入emqx的官网下载软件:下载 EMQX ,linux上的我就不演示了。

1. 下载 emqx-windows-4.2.5.zip SHA256 ,解压 2. 命令行下进入解压路径,启动 emqx 命令: ./bin/emqx start

    Emqx的官方使用指南:启动 EMQX | EMQX 4.3 文档 在linux上默认启动会报一个错误:windows WARNING: ulimit -n is 256; 1024 is the recommended minimum需要修改一下windows的设置,启动之后可以使用:./bin/emqx_ctl status 查看启动状态即可。

root@test:/soft/emqx# emqx_ctl status
Node 'emqx@127.0.0.1' is started
emqx 4.1.1 is running

3. 关于Emqx 需要监听的端口

EMQX消息服务器默认使用以下端口
1883 MQTT protocol port
8883 MQTT/SSL port   # 不用https 不用开
8083 MQTT/WebSocket port
8080 HTTP API port
18083 Dashboard Management Console Port
 
    同时也可以直接登陆Web管理控制台,界面直观查看服务器运行状态、统计数据、客户端(Client)、会话(Session)、主题(Topic)、订阅(Subscription)、插件(Plugin)等信息,控制台地址:http://IP地址:18083,默认用户:admin,密码:public。 另外emqx常用命令有:emqx start, emqx stop, emqx restart, emqx_ctl status。

二、Centos7.9中将EMQX加进systemctl开机启动报错

    Centos7.9中将EMQX加进systemctl开机启动报错的问题解决。从官网下载的压缩包解压,从里面的bin目录中执行emqx start可以正常启动,但是使用systemctl进行开机自启,报错windows WARNING: ulimit -n is 256; 1024 is the recommended minimum。

     emqx.service自启配置文件内容如下:

# cat /etc/systemd/system/emqx.service
[Unit]
Description=Emq
After=network.target 
After=syslog.target
  
[Service]
User=root
Group=root
Type=forking
TimeoutSec=0
ExecStart=/opt/emqx/bin/emqx start
WorkingDirectory=/opt/emqx/
PrivateTmp=true
  
[Install]
WantedBy=multi-user.target
#保存成功后执行enable和reload加载均正常。
systemctl enable emqx.service
systemctl daemon-reload

    使用emqx console启动也正常,但执行systemctl start emqx.service和开机后均会报错。目前使用的其它方法进行开机启动,先做个问题记录。

# systemctl start emqx.service
Job for emqx.service failed because the control process exited with error code. See "systemctl status emqx.service" and "journalctl -xe" for details.
EMQ X Broker 4 failed to start within 15 seconds,
systemctl emqx WAIT_FOR_ERLANG to the number of seconds to wait.
emqx.service: control process exited, code=exited status=1
Failed to start Emq.