源码编译安装EMQX V3.0服务器(MQTT)

2024-05-05 06:48

本文主要是介绍源码编译安装EMQX V3.0服务器(MQTT),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

5G 时代,万物互联消息引擎!EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。Erlang/OTP 是出色的软实时(Soft-Realtime)、低延时(Low-Latency)、分布式(Distributed) 的语言平台。MQTT 是轻量的(Lightweight)、发布订阅模式(PubSub) 的物联网消息协议。

 

EMQ X 项目设计目标是承载移动终端或物联网终端海量 MQTT 连接,并实现在海量物联网设备间快速低延时消息路由:

  • 稳定承载大规模的 MQTT 客户端连接,单服务器节点支持50万到100万连接。

  • 分布式节点集群,快速低延时的消息路由,单集群支持1000万规模的路由。

  • 消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。

  • 完整物联网协议支持,MQTT、MQTT-SN、CoAP、WebSocket 或私有协议支持。


 

文章摘要

本篇文章介绍源码编译安装EMQX,后续需要搭配自定义插件将mqtt消息转发到Kafka消息中间件里。

 

我们选择EMQX 开源版,如果要将消息持久化到Kafka里(收费的企业版里支持),需要自行编写插件,幸好Github有开源的kafka插件,我们找V3的一个稳定版本以便能适配kafka插件(目前还没适配3.1或更高版本),因此我们选择3.0.1版本,我们编译安装这个版本。

 

安装Erlang

EMQ 消息服务器基于 Erlang/OTP 平台开发,源码编译依赖 Erlang 环境。EMQX 3.0 依赖Erlang 21.3 版本。

yum install gcc* glibc-devel makencurses-devel openssl-devel autoconf -y
yum install unixODBC unixODBC-devel-y
yum -y install gcc-c++ kernel-develm4 python-simplejson

下载安装包(注意版本号21.3)

wget http://erlang.org/download/otp_src_21.3.tar.gz(80几M,下载很慢)
tar -zxvf otp_src_21.3.tar.gz
cd otp_src_21.3
./otp_build autoconf
(带上ssl模块)
./configure --enable-smp-support--enable-threads --enable-sctp --enable-kernel-poll --enable-hipe --with-ssl
make && make install

erlang 默认安装路径 /usr/local/lib/erlang,验证版本:

 

erl

返回:

Erlang/OTP 21 [erts-10.3] [source][64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
Eshell V10.3  (abort with ^G)

 

注意,如果之前安装过不同的Erlang版本,安装新版本之前,需要先把老版本的安装目录/usr/local/lib/erlang删除之后再安装新版本,不然安装其他软件时会报编译版本错误。

 

 

安装Rebar(Erlang开发构建工具)

安装依赖rebar(注意rebar3是另外的新版本)

git clonegit://github.com/rebar/rebar.git
cd rebar
./bootstrap

安装成功

==> rebar (compile)
==> rebar (escriptize)
Congratulations! You now have aself-contained script called "rebar" in
your current working directory. Placethis script anywhere in your path
and you can use rebar to buildOTP-compliant apps.

配置环境变量

vi /etc/profile
export PATH=/emq/rebar/:$PATH (rebar安装目录)

执行文件:

source /etc/profile

测试是否安装成功

rebar -V

若出现如下提示,则证明安装成功

rebar 2.6.4 22 20190625_031823 git2.6.4-39-gb6d3094

 

如果安装rebar3,可能有错误:

/emq/rebar3/_build/default/lib/erlware_commons/src/ec_plists.erl:834:Warning: erlang:get_stacktrace/0: deprecated; use the new try/catch syntax forretrieving the stack backtrace
/emq/rebar3/_build/default/lib/erlware_commons/src/ec_plists.erl:836:Warning: erlang:get_stacktrace/0: deprecated; use the new try/catch syntax forretrieving the stack backtrace

解决方法:

使用https://github.com/ferd/erlware_commons/blob/ad2d57d8b62b86ec1f3d03441f7defa595f2c59c/src/ec_plists.erl替换ec_plists.erl文件。

 

 

安装EMQX 3.0.1

mkdir /emq
cd /emq
wget -c https://github.com/emqx/emqx-rel/archive/v3.0.1.tar.gz
tar -zxvf v3.0.1.tar.gz
mv emqx-rel-3.0.1 emqx-rel
cd emqx-rel/
make(编译,很慢;可以先把下面的kafka插件增加进来后,再回到这里编译)

编译成功,返回:

===> Starting relx build process...
===> Resolving OTP Applicationsfrom directories:/emq/emqx-rel/deps/usr/local/lib/erlang/lib/emq/emqx-rel/apps
===> Resolved emqx-3.0.1
===> Including Erts from/usr/local/lib/erlang
===> release successfully created!

 

启动 EMQ X

cd _rel/emqx/bin
./emqx start  启动./emqx_ctl status  状态

EMQX配置文件

/emq/emqx-rel/_rel/emqx/etc/emqx.conf
#关闭匿名认证
mqtt.allow_anonymous = false
#Erlang Process Limit
node.process_limit = 2097152
#Sets the maximum number ofsimultaneously existing ports for this system
node.max_ports = 1048576

 

好了,到这里 源码编译安装 EMQX 3.0.1 就完成了。

这篇关于源码编译安装EMQX V3.0服务器(MQTT)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961045

相关文章

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1