【物联网】EMQX(二)——docker快速搭建EMQX 和 MQTTX客户端使用

一、前言

在上一篇文章中,小编向大家介绍了物联网必然会用到的消息服务器EMQ,相信大家也对EMQ有了一定的了解,那么接下来,小编从这篇文章正式开始展开对EMQ的学习教程,本章节来记录一下如何对EMQ进行安装。

二、使用Docker快速安装EMQ

EMQ作为第三方中间件,可以安装到很多种平台上,比如macOS、windows、Centos、Ubuntu等等。安装部署非常的简单,下面小编亿在mac上进行docker安装为例,展示一下安装过程。当然在生产环境,最好还是使用物理机部署emq,保证emq的稳定。

Docker容器开发,相信大家应该或多或少有所了解,了解的同学可以直接跳过docker的安装过程,如果不了解,大家可以参看一下小编下面的文章,简单介绍了docker是什么?以及如何使用docker简单的搭建容器:

【Docker】容器技术黑马Docker(一)------了解容器技术,了解Docker

【Docker】容器技术黑马Docker(二)------安装与基本命令的使用

接下来我们将在docker上安装emq容器,并进行消息的发送和订阅

下载EMQ镜像

小编这里使用的是mac版本的docker,安装好docker后,我们直接执行命令,来拉取emq的镜像:

运行一下命令获取Docker镜像:

java 复制代码
docker pull emqx/emqx:5.3.2

执行完命令,就可以看到 Status: Downloaded newer image for emqx/emqx:5.3.2 这样的提示,表示下载镜像完成了。

tips: 如果发现下载不下来,可能是配置的docker源的问题,可以使用下面命令来查看使用的是哪个下载的源:

java 复制代码
docker info | grep Registry

如果发现是外国的源,我们可以替换为国内常用的 阿里云的源,进行下载

java 复制代码
docker login registry.cn-hangzhou.aliyuncs.com

注意这里需要使用阿里云的账号进行登录,需要在阿里云的容器平台注册账号,而不是阿里云的登录账号密码

详情可以参看:

docker切换阿里云源

这样我们下载好镜像,可以通过下面命令看到已经有的镜像

java 复制代码
docker images

运行Docker容器

运行以下命令启动Docker容器:

java 复制代码
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.3.2

命令的解释如下:

-d:以分离模式(detached mode)运行容器。这意味着容器将在后台运行,而不会将控制台输出连接到当前终端。

--name emqx:为容器指定一个名称,这里将容器命名为 emqx。

-p 1883:1883:将容器的端口 1883 映射到主机的端口 1883。这意味着容器内的应用程序可以在端口 1883 上接收来自主机的连接。

-p 8083:8083:将容器的端口 8083 映射到主机的端口 8083。这意味着容器内的应用程序可以在端口 8083 上接收来自主机的连接。

-p 8084:8084:将容器的端口 8084 映射到主机的端口 8084。这意味着容器内的应用程序可以在端口 8084 上接收来自主机的连接。

-p 8883:8883:将容器的端口 8883 映射到主机的端口 8883。这意味着容器内的应用程序可以在端口 8883 上接收来自主机的连接。

-p 18083:18083:将容器的端口 18083 映射到主机的端口 18083。这意味着容器内的应用程序可以在端口 18083 上接收来自主机的连接。

emqx/emqx:5.3.2:指定要运行的镜像。这里使用的是 emqx/emqx 镜像的 5.3.2 版本。这个镜像包含了一个名为 emqx 的应用程序。

这个命令的整体效果是在后台运行一个名为 emqx 的容器,容器内运行着一个名为 emqx 的应用程序。容器的端口 1883、8083、8084、8883 和 18083 都被映射到主机的对应端口上,这样主机就可以通过这些端口与容器内的应用程序进行通信。

这样就运行起来了。

查看EMQ的dashboard

访问本机的 http://localhost:18083/#/login?to=/dashboard/overview ,登录emq的dashboard,默认用户名admin,密码public

登录成功后:

在首页,一共包含了三个tab页面:

  • 概览:显示整个集群内数据的概况,可以看到总连接数,在线连接数等
  • 节点:查看集群中的节点列表和节点信息,
  • 指标:查看集群或单个节点内所有的数据指标



其他的模块,大家可以点点看看。这里不做太多的介绍了。

三、MQTTX客户端连接EMQ

接下来我们介绍一下MQTTX客户端连模拟一下生产者和消费者。

首先我们下载一个MQTTX客户端:

我们可以在EMQ官网的首页 ,进行下载,选择对应平台下载即可。

下载后安装打开,会看到如下的界面:

建立一个新链接:

然后建立一个订阅topic ,这里小编建立的是emq这个名字,我们向这个topic发送消息,同时也订阅这个消息。

当我们向 这个emq这个topic发送了 hello消息。这个时候可以看到也收到了一条消息。

我们再次去后台看一下:

在客户端模块 可以看到此时有一个客户端连接上来。

四、小结

通过上面的安装学习,相信大家已经了解了EMQ这个消息中间件是如何处理消息的。其实还是通过学习老的知识,对比学习会有更大的收获,和kafka做对比。相比之下,emq在硬件上使用是更加方便的,举个例子,家里的小米智能家居是如何收到我们的操作指令的呢?我们手机控制灯关闭,开启。其实也就是先发送消息到EMQ消息中间件上,台灯订阅的EMQ的消息TOPIC,当有消息来的时候,就会收到消息,从而做出对应的动作。

期望您的到来,请查看:

【物联网】EMQX(一)------EMQ是什么?物联网竟然用这个?

【物联网】EMQX(二)------docker快速搭建EMQX 和 MQTTX客户端使用

【物联网】EMQX(三)------如何使用SSL/TLS双向认证连接EMQX?

【物联网】EMQX(四)------java服务端如何连接EMQ?

【物联网】EMQX(五)------待定

相关推荐
Java陈序员2 小时前
再见 Navicat!一款开源的 Web 数据库管理工具!
java·react.js·docker
小智学长 | 嵌入式4 小时前
SOC-ESP32S3部分:36-适配自己的板卡
单片机·物联网·esp32
打码人的日常分享13 小时前
物联网智慧医院建设方案(PPT)
大数据·物联网·架构·流程图·智慧城市·制造
MickeyCV13 小时前
使用Docker部署MySQL&Redis容器与常见命令
redis·mysql·docker·容器·wsl·镜像
棠十一14 小时前
Rabbitmq
分布式·docker·rabbitmq
藥瓿亭15 小时前
K8S认证|CKS题库+答案| 6. 创建 Secret
运维·ubuntu·docker·云原生·容器·kubernetes·cks
2302_8097983215 小时前
【JavaWeb】Docker项目部署
java·运维·后端·青少年编程·docker·容器
嵌入式大圣15 小时前
Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
运维·docker·容器
玩转4G物联网15 小时前
零基础玩转物联网-串口转以太网模块如何快速实现与TCP服务器通信
服务器·网络·物联网·网络协议·tcp/ip·http·fs100p
孔令飞15 小时前
Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
ai·云原生·容器·golang·kubernetes