MQTT服务(EMQX)安装

2024-04-27 01:38
文章标签 服务 安装 mqtt emqx

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

安装及测试EMQ X

  EMQ X R3.0 (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 语言平台开发,支持大规模连接和分布式集群,发布订阅模式的开源 MQTT 消息服务器。

  MQTT是一个由IBM主导开发的物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。它的核心设计思想是开源、可靠、轻巧、简单,具有以下主要的几项特性:
1.非常小的通信开销(最小的消息大小为 2 字节);
2.支持各种流行编程语言(包括C,Java,Ruby,Python 等等)且易于使用的客户端;
3.支持发布 / 预定模型,简化应用程序的开发;
4.提供三种不同消息传递等级,让消息能按需到达目的地,适应在不稳定工作的网络传输需求。

官方网址:https://www.emqx.io/

1. 二进制包安装

1.1. Ubuntu

	download: https://www.emqx.io/downloads/broker?osType=Linux#example bin url: https://www.emqx.io/downloads/broker/v4.0.5/emqx-ubuntu16.04-v4.0.5.zipunzip emqx-ubuntu16.04-v4.0.5.zip && cd emqx# start emqx./bin/emqx start# Check the running status./bin/emqx_ctl status# stop emqx./bin/emqx stopMQTT can connect it though port 1883web console: http://127.0.0.1:18083,default username: admin,password:public

1.2. CentOS

yum install https://www.emqx.io/downloads/broker/v4.0.5/emqx-centos7-v4.0.5.x86_64.rpm
# start emqx
systemctl start emqx
# start emqx when reboot/power-on
systemctl enable emqx

2.源码编译安装

install Erlang
install rebar3: A sophisticated build-tool for Erlang projects that follows OTP principles#Get the source code$ git clone -b v3.2.0 https://github.com/emqx/emqx-rel.git
#Set environment variables$ export EMQX_DEPS_DEFAULT_VSN=v3.2.0
#Compile$ cd emqx-rel && make
#Start EMQ X$ cd _build/emqx/rel/emqx
$ ./bin/emqx start
emqx v3.2.0 is started successfully!$ ./bin/emqx_ctl status
Node 'emqx@127.0.0.1' is started
emqx 3.2.0 is running

3.EMQX消息服务器默认配置

  • TCP端口包括:
	1883	MQTT protocol port8883	MQTT/SSL port8083	MQTT/WebSocket port8080	HTTP API port18083	Dashboard Management Console Port
  • 使用 mosquitto_sub/pub客户端命令行来订阅和发布消息:
//订阅消息并在后台监听
mosquitto_sub -h 127.0.0.1 -p 1883 -t topic1 -q 2 &
//发布消息
mosquitto_pub -h 127.0.0.1 -p 1883 -t topic1 -q 1 -m ‘Hello, MQTT!’
  • 后台管理web端口

  端口18083登录web进入管理端入口,默认用户: admin,密码:public。左侧管理边栏可以对EMQX设置,其中plugins可以管理插件,具体内容自行查看https://developer.emqx.io/docs/emq/v3/cn/plugins.html;可以用./bin/emqx_ctl plugins load 插件名字安装插件。

4.emqx提供了三种消息发布服务质量

  Quality of Service等级是发送与接收端的一种关于保证交付信息的协议。一共有3 个QoS 等级:

  • "至多一次0",消息发布完全依赖底层TCP/IP 网络,会发生消息丢失或者重复,这一级别可用于如下情况,环境,传感器数据,丢失一次度记录无所谓,因为不久之后会有第二次发送;

  • "至少一次1",确保消息到达,但消息重复可能发生;

  • “只有一次2",确保消息到达一次,这一级别可用于如下情况,在计费系统中,消息重复或者丢失导致不正确的结果。

5.EMQ离线消息

  1. 保留消息 MQTT客户端向服务器发布(PUBLISH)消息时,可以设置保留消息(Retained Message)标志。保留消息(Retained Message)会驻留在消息服务器,后来的订阅者订阅主题时仍可以接收该消息。 例如mosquitto命令行发布一条保留消息到主题’a/b/c’: mosquitto_pub -r -q 1 -t a/b/c -m ‘hello’ 之后连接上来的MQTT客户端订阅主题’a/b/c’时候,仍可收到该消息: $ mosquitto_sub -t a/b/c -q 1 hello 保留消息(Retained Message)有两种清除方式: 客户端向有保留消息的主题发布一个空消息: mosquitto_pub -r -q 1 -t a/b/c -m ‘’ 消息服务器设置保留消息的超期时间。

  2. cleanSession 清理回话 MQTT客户端向服务器发起CONNECT请求时,可以通过’Clean Session’标志设置会话。 ‘Clean Session’设置为0,表示创建一个持久会话,在客户端断开连接时,会话仍然保持并保存离线消息,直到会话超时注销。 ‘Clean Session’设置为1,表示创建一个新的临时会话,在客户端断开时,会话自动销毁。

6.测试Username

cd /home/x/work/emqx-rel/_build/emqx/rel/emqxadd a user./bin/emqx_ctl users add ElonMusk passwordvim ./etc/emqx.confallow_anonymous = false
enable plugins./bin/emqx_ctl plugins list./bin/emqx_ctl plugins load emqx_auth_username
restart emqx./bin/emqx restart./bin/emqx --helpUsage: emqx {start|start_boot <file>|ertspath|foreground|stop|restart|reboot|pid|ping|console|console_clean|console_boot <file>|attach|remote_console|upgrade|escript|rpc|rpcterms|eval}mosquitto_sub -h 127.0.0.1 -p 1883 -d -t topic -q 2 -u ElonMusk -P password
mosquitto_pub -h 127.0.0.1 -p 1883 -d -t topic -q 2 -m "Hello, Username!" -u ElonMusk -P password

7.测试TLS

mosquitto_sub -h 127.0.0.1 -p 8883 -d -t topic -q 2 -u ElonMusk -P password --psk 1234 --psk-identity client1
mosquitto_pub -h 127.0.0.1 -p 8883 -d -t topic -q 2 -m "Hello TLS" -u Sender -P password --psk 1234 --psk-identity client1

8.认证

authetication is provided by a seriers of authentication plugins
supports authentication by username, password, ClientID or anonymous
anonymous is default
Multiple auth plug-ins can be started at the same time. The plug-in that starts first checks first.Username Auth -> ClientID Auth -> Anonymous AuthModify etc/emqx.conf enable anonymous authentication:allow_anonymous = trueAccess Control List:acl_nomatch = allowacl_file = etc/acl.confetc/acl.conf%% Aallows 'dashboard' users to subscribe to '$SYS/#'{allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}.%% Allows local user to publish and subscribe to all topics{allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}.%% Deny all the users to subscribe to '$SYS/#' and '#' topics except local users{deny, all, subscribe, ["$SYS/#", {eq, "#"}]}.%% Allows any situation other than the above rules{allow, all}.The authentication plugins provided by EMQ X include:plugins				description
emqx_auth_clientid	ClientId authentication plugin
emqx_auth_username	username and password authentication plugin
emqx_auth_jwt	JWT authentication plugin
emqx_auth_ldap	LDAP authentication plugin
emqx_auth_http	HTTP authentication plugin
emqx_auth_mysql	MySQ Lauthentication plugin
emqx_auth_pgsql	Postgre authentication plugin
emqx_auth_redis	Redis authentication plugin
emqx_auth_mongo	MongoDB authentication plugin

9. 网桥

RPC bridge
MQTT bridgeconfigure:etc/plugins/emqx_bridge_mqtt.conf

10. HTTP发布API接口

through which an application server or web server can publish MQTT messages

11. MQTT网络socket链接

web browsers or applications can connect directly to the broker via WebSocket

12. 配置

File	Description
etc/emqx.conf	EMQ X 3.0 Configuration File
etc/acl.conf	The default ACL File
etc/plugins/*.conf	Config Files of PluginsConfiguration file processing flow during EMQ X start-up::

---------------------- 3.0/schema/.schema -------------------
| etc/emqx.conf | ----------------- |/ | data/app.config |
| + | --> mergeconf --> | data/app.conf | --> cuttlefish generate --> | |
| etc/plugins/
.conf | ----------------- | data/vm.args |


EMQ X Node Connection Method:##  Specify the Erlang Distributed Communication Protocol: inet_tcp | inet6_tcp | inet_tlsnode.proto_dist = inet_tcpFiles for storing SSL/TLS options when Erlang distributed using TLS:node.ssl_dist_optfile = etc/ssl_dist.confMQTT/SSL Listener - 8883SSL listening port:listener.ssl.external = 8883Path of the file containing the user’s private key:listener.ssl.external.keyfile = etc/certs/key.pemPath of the file containing the user certificate:listener.ssl.external.certfile = etc/certs/cert.pemPath of the file containing the CA certificate:## listener.ssl.external.cacertfile = etc/certs/cacert.pem

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



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

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP