通过Docker Compose安装MQTT

一、文件和目录说明

1、MQTT安装时的文件和目录

EMQX 安装完成后会创建一些目录用来存放运行文件和配置文件,存储数据以及记录日志。

不同安装方式得到的文件和目录位置有所不同,具体如下:

在这里插入图片描述
注意:

  • 压缩包解压安装时,目录相对于软件所在目录;
  • Docker 容器使用压缩包解压安装的方式,软件安装于 /opt/emqx 目录中
  • data、log、plugins 目录可以通过配置文件设置,建议将 data 目录挂载至高性能磁盘以获得更好的性能。但对于属于同一集群的节点, data 目录的配置应该相同。

2、文件和目录说明

这里介绍一下其中的部分目录,其中包含的文件和子文件夹。

在这里插入图片描述
注意:
EMQX 的配置项存储在 etc 和 data/configs 目录下,二者的主要区别是 etc 目录存储只读的配置文件,用户通过 Dashboard 和 REST API 提交的配置将被保存到 data/configs 目录下,并支持在运行时进行热更新。

EMQX 读取这些配置并将其合并转化为 Erlang 原生配置文件格式,以便在运行时应用这些配置。

配置文件手册:https://www.emqx.io/docs/zh/v5.1/configuration/configuration.html

二、通过Docker Compose安装MQTT

1、下载emqx-5.1.6的安装包

  • 下载地址:https://www.emqx.com/zh/try?product=broker

在这里插入图片描述

后面通过 Docker Compose启动时,发现报错,会提示我们缺少一些文件等问题。所以,我们提前将下载压缩包中需要的文件复制到我们映射的数据卷中。文件在压缩包里面的 /opt/emqx/中。

通过我再三的试错摸索,emqx-5.1.6版本需要提前把下面几个文件复制到我们对应的数据卷中。

└── emqx├── data│   └── configs├── etc├── acl.conf├── certs│   ├── cacert.pem│   ├── cert.pem│   ├── client-cert.pem│   ├── client-key.pem│   ├── key.pem│   └── README├── emqx.conf└── vm.args

2、准备文件和目录

1)在任意目录创建一个 mqtt_emqx5文件夹和数据卷所挂载的目录。

[root@centos7 ~]# mkdir /usr/local/src/mqtt_emqx5
[root@centos7 ~]# cd /usr/local/src/mqtt_emqx5
# 数据卷
[root@centos7 mqtt_emqx5]# mkdir -p ./emqx/data
[root@centos7 mqtt_emqx5]# mkdir -p ./emqx/etc
[root@centos7 mqtt_emqx5]# mkdir -p ./emqx/log

2)将上面压缩包中提到的那几个文件复制到我们的数据卷目录中

# 复制完之后,给挂载目录赋予权限
[root@centos7 mqtt_emqx5]# chmod 777 -R ./emqx/

创建并编写docker-compose.yaml

3)创建并编写docker-compose.yaml

[root@centos7 mqtt_emqx5]# cat docker-compose.yaml
version: '3.7'services:emqx5_s1:image: "emqx/emqx:5.1.6"container_name: "emqx5_s1"environment:- "EMQX_NAME=emqx5_s1"- "EMQX_HOST=127.0.0.1"ports:- 1883:1883- 8083:8083- 8084:8084- 8883:8883- 18083:18083volumes:- $PWD/emqx/etc:/opt/emqx/etc- $PWD/emqx/data:/opt/emqx/data- $PWD/emqx/log:/opt/emqx/log#restart: always
[root@centos7 mqtt_emqx5]#

EMQX默认开启的MQTT服务各个端口说明:

  • 1883:MQTT 协议端口
  • 8883:MQTT/SSL 端口
  • 8083:MQTT/WebSocket 端口
  • 8084:MQTT/WebSocket/SSL端口
  • 8080:HTTP API 端口
  • 18083:Dashboard 管理控制台端口

最终 mqtt_emqx5文件夹中的内容如下:

[root@centos7 mqtt_emqx5]# tree
.
├── docker-compose.yaml
└── emqx├── data│   └── configs├── etc│   ├── acl.conf│   ├── certs│   │   ├── cacert.pem│   │   ├── cert.pem│   │   ├── client-cert.pem│   │   ├── client-key.pem│   │   ├── key.pem│   │   └── README│   ├── emqx.conf│   └── vm.args└── log6 directories, 10 files

3、启动MQTT

  • 使用 docker-compose up启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试,通过 Ctrl-C停止命令时,该容器也会停止。
  • 使用 docker-compose up -d命令,则将会在后台启动并运行该容器,一般推荐使用。

一般进入到 docker-compose.yml的上下文目录中,执行命令:

  • 启动项目:docker-compose up -d
  • 停止项目:docker-compose down
[root@centos7 mqtt_emqx5]# docker-compose up
Starting emqx5_s1 ... done
Attaching to emqx5_s1
emqx5_s1    | WARNING: Default (insecure) Erlang cookie is in use.
emqx5_s1    | WARNING: Configure node.cookie in /opt/emqx/etc/emqx.conf or override from environment variable EMQX_NODE__COOKIE
emqx5_s1    | WARNING: NOTE: Use the same cookie for all nodes in the cluster.
emqx5_s1    | EMQX_RPC__PORT_DISCOVERY [rpc.port_discovery]: manual
emqx5_s1    | EMQX_NODE__NAME [node.name]: emqx5_s1@127.0.0.1
emqx5_s1    | Listener ssl:default on 0.0.0.0:8883 started.
emqx5_s1    | Listener tcp:default on 0.0.0.0:1883 started.
emqx5_s1    | Listener ws:default on 0.0.0.0:8083 started.
emqx5_s1    | Listener wss:default on 0.0.0.0:8084 started.
emqx5_s1    | Listener http:dashboard on :18083 started.
emqx5_s1    | EMQX 5.1.6 is running now!

通过浏览器就可以访问 ip:18083端口(默认的用户名是admin,密码为public),登录成功后会打开一个管理控制台网页。主界面如下:

在这里插入图片描述

三、MQTTX客户端

官方下载,傻瓜式安装:https://mqttx.app/zh

1、建立连接

新建MQTT服务端连接。

在这里插入图片描述

2、订阅主题

在这里插入图片描述

MQTT 协议根据主题来转发消息。主题被用来标识和区分不同的消息,它是 MQTT 消息路由的基础。

主题通过 / 来区分层级,类似于 URL 路径。MQTT 主题支持以下两种通配符:+ 和 #。

  • +:表示单层通配符,例如 a/+ 匹配 a/x 或 a/y。
  • #:表示多层通配符,例如 a/# 匹配 a/x、a/b/c/d。

注意:通配符主题只能用于订阅,不能用于发布。

关于 MQTT 主题的更多详情,请参阅文章通过案例理解 MQTT 主题与通配符:https://www.emqx.com/zh/blog/advanced-features-of-mqtt-topics

MQTTX客户端的更多使用,查看官方文档。

– 求知若饥,虚心若愚。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/101773.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka的文件存储与稀疏索引机制

![在这里插入图片描述](https://img-blog.csdnimg.cn/dde7fc866d214985baaa87300a472578.png)这些是存储在分区(分区才是实际的存储)文件中的. seg是逻辑概念 而实际由log存储的. index是偏移量索引而timeindex是时间戳索引 log就是seg 找数据就是先找log 再从log去找

MySQL视图用户管理

文章目录 视图视图的规则用户用户信息创建用户删除用户修改密码 用户权限给用户授权回收权限 视图 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会…

2.6 PE结构:导出表详细解析

导出表(Export Table)是Windows可执行文件中的一个结构,记录了可执行文件中某些函数或变量的名称和地址,这些名称和地址可以供其他程序调用或使用。当PE文件执行时Windows装载器将文件装入内存并将导入表中登记的DLL文件一并装入&…

HCIA自学笔记01-传输介质

通信网络除了包含通信设备本身之外,还包含连接这些设备的传输介质,如同轴电缆、双绞线和光纤等。不同的传输介质具有不同的特性,这些特性直接影响到通信的诸多方面,如线路编码方式、传输速度和传输距离等。 简单网络:…

数据分享|WEKA信贷违约预测报告:用决策树、随机森林、支持向量机SVM、朴素贝叶斯、逻辑回归...

完整报告链接:http://tecdat.cn/?p28579 作者:Nuo Liu 数据变得越来越重要,其核心应用“预测”也成为互联网行业以及产业变革的重要力量。近年来网络 P2P借贷发展形势迅猛,一方面普通用户可以更加灵活、便快捷地获得中小额度的贷…

2023高教社杯 国赛数学建模B题思路 - 多波束测线问题

1 赛题 B 题 多波束测线问题 单波束测深是利用声波在水中的传播特性来测量水体深度的技术。声波在均匀介质中作匀 速直线传播, 在不同界面上产生反射, 利用这一原理,从测量船换能器垂直向海底发射声波信 号,并记录从声波发射到信…

技术面试与HR面:两者之间的关联与区别

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

Jetpack Compose 教程

一、简介 Jetpack Compose 是用于构建原生 Android 界面的新工具包。它使用更少的代码、强大的工具和直观的 Kotlin API,可以帮助您简化并加快 Android 界面开发。 在本教程中,您将使用声明性的函数构建一个简单的界面组件。您无需修改任何 XML 布局&am…

提高使用VS Code工作效率的技巧

提高使用VS Code工作效率的技巧 时间轴视图:本地源代码控制 时间轴视图为我们提供了内置的源代码控制。 我们中的许多人都知道 Git 和其他源代码控制工具有多么有用,它们可以帮助我们轻松跟踪文件更改并在需要时恢复到之前的状态。 因此,…

mac 查看端口占用

sudo lsof -i tcp:port # 示例 sudo lsof -i tcp:8080 杀死进程 sudo kill -9 PID # 示例 sudo kill -9 8080

如何使用聊天GPT自定义说明

推荐:使用 NSDT场景编辑器 快速搭建3D应用场景 OpenAI ChatGPT正在席卷全球。一周又一周,更新不断提高您可以使用这种最先进的语言模型做什么的标准。 在这里,我们深入研究了OpenAI最近在ChatGPT自定义指令上发布的公告。此功能最初以测试版…

面试中的时间管理:如何在有限时间内展示最大价值

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…