当前位置: 首页 > news >正文

【物联网】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镜像:

docker pull emqx/emqx:5.3.2

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

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

docker info | grep Registry

在这里插入图片描述

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

docker login registry.cn-hangzhou.aliyuncs.com

在这里插入图片描述
注意这里需要使用阿里云的账号进行登录,需要在阿里云的容器平台注册账号,而不是阿里云的登录账号密码
详情可以参看:

docker切换阿里云源

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

docker images

在这里插入图片描述

运行Docker容器

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

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(五)——待定

相关文章:

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

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

2023 亚马逊云科技 re:lnvent 大会探秘: Amazon Connect 全渠道云联络中心

2023 亚马逊云科技 re:lnvent 大会探秘: Amazon Connect 全渠道云联络中心 前言一. Amazon Connect 介绍 🗺️二. Amazon Connect 使用教程 🗺️1.我们打开URl链接找到对应服务2.输入Amazon Connect选中第一个点击进入即可;3.在进入之后我们就…...

鸿蒙开发之用户隐私权限申请

一、简介 鸿蒙开发过程中可用于请求的权限一共有两种:normal和system_basic。以下内容摘自官网: normal权限 normal 权限允许应用访问超出默认规则外的普通系统资源。这些系统资源的开放(包括数据和功能)对用户隐私以及其他应用带…...

Docker笔记:简单部署 nodejs 项目和 golang 项目

docker 简单的维护 nodejs 项目容器 1 )Nodejs 程序 const express require(express) const app express()app.get(/, (req, res) > {res.send(首页) })app.get(/news, (req, res) > {res.send(news) })// dokcer 做端口映射不要指定ip app.listen(3000)2…...

java内置的数据结构

Java语言提供了许多内置的数据结构,包括: 1. 数组(Array):数组是最基本的数据结构之一,它是一个有序的元素集合,每个元素都有一个对应的索引。在Java中,数组可以通过声明和初始化来创…...

轻松搭建FPGA开发环境:第三课——Vivado 库编译与设置说明

工欲善其事必先利其器,很多人想从事FPGA的开发,但是不知道如何下手。既要装这个软件,又要装那个软件,还要编译仿真库,网上的教程一大堆,不知道到底应该听谁的。所以很多人还没开始就被繁琐的开发环境搭建吓…...

【PostgreSQL】从零开始:(十一)PostgreSQL-Dropdb命令删除数据库

dropdb命令删除数据库 命令 [postgrespostgre-sql bin]$ dropdb --help dropdb removes a PostgreSQL database.Usage:dropdb [OPTION]... DBNAMEOptions:-e, --echo show the commands being sent to the server-f, --force try to terminate …...

UDP网络编程其他相关事项

netstat指令 netstat -an 可以查看当前主机网络情况,包括端口监听情况和网络连接情况。 netstat -an | more 可以分页显示。 要求在dos控制台下执行。 说明:(1)Listening表示某个端口在监听;(2&#xf…...

Redhat LINUX 9.3 + PG 16.1 搭建主备流复制

一直想搭建一个PG流复制,最近正好有一个新环境,操作系统是最新的,rhel 9.3,数据库是最新的 pg 16.1,借鉴了网上的步骤,尤其是小工到专家的内容,在此谢过。 1.安装环境 1)IP: 主:192.168.133.151…...

kafka设置消费者组

安装部署后 consumer.properties group.idtest-group 单机测试,自己开俩窗口,一个测试消费者,一个测试生产者(创建消息那步) 创建主题 bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replica…...

Worker-Thread设计模式

Worker-Thread模式类似于工厂流水线,有时也称为流水线设计模式。线程池在某种意义上也算是Worker-Thread模式的一种实现,线程池初始化时创建线程类似于在流水线等待工作的工人,提交给线程池的Runnable接口类似于需要加工的产品,Ru…...

npm 安装包遇到问题的常用脚本(RequestError: socket hang up)

前言 最近在给一个基于 Electron 的开源项目做贡献,需要去安装一些 npm 库,由于众所周知的原因,经常会出现报错: npm ERR! path D:\Projects\project\node_modules\electron npm ERR! command failed npm ERR! command C:\Windo…...

活动 | Mint Blockchain 将于 2024 年 1 月 10 号启动 MintPass 限时铸造活动

MintPass 是由 Mint Blockchain 官方发行的 Mint 网络和社区的 NFT 通行证,将在 2024 年 1 月份启动限时铸造活动。今天这篇文章会着重向大家介绍即将举办的 MintPass 活动的基础信息。 MintPass 有 2 种类型: 类型 1:Mint Genesis NFT Mint…...

Android动画(四)——属性动画ValueAnimator的妙用

目录 介绍 效果图 代码实现 xml文件 介绍 ValueAnimator是ObjectAnimator的父类,它继承自Animator。ValueAnimaotor同样提供了ofInt、ofFloat、ofObject等静态方法,传入的参数是动画过程的开始值、中间值、结束值来构造动画对象。可以将ValueAnimator看…...

C语言飞机大战

一、前言 [设计难度 : ★☆☆☆☆ [参考书籍:《C语言课程设计与游戏开发实践教程》 [主要涉及知识:函数封装 循环判断语句 [程序运行效果图: [主要的游戏功能: 通过按键’w’,‘s’,‘a’,d’分别实现飞机的上下左右移动 按空格…...

js 原型 和 原型链

function Person(name,age){ this.name name this.age age } var p new Person(张三,11) //创建构造函数的时候,解析器会自动为构造函数创建prototype属性,prototype属性对应的对象就是原型对象 // prototype 翻译为 原…...

如何利用SD-WAN节省运维成本和简化运维工作?

在当今数字化时代,企业对于网络的要求越来越高,需要保障网络的安全性、可靠性和灵活性。同时,随着企业的上云和远程办公等需求的增加,传统的WAN网络已经无法满足企业的需求。因此,SD-WAN技术应运而生。 SD-WAN节省运维…...

在工作中使用CHAT提高效率

问CHAT:数智时代与中国情境下的营销管理创新方向:市场营销(管理)的使命 CHAT回复:市场营销(管理)的使命可以被概述为寻找、吸引和保留消费者。通过识别、满足甚至超越消费者期望,以实…...

Maven 项目的三种打包方式与 pom.xml 文件中项目描述

目录&#xff1a; 定义项目的信息 本项目描述相关标签<parent> 标签<relativePath/> 标签<scope> 标签 Maven 三种打包方式 JARWARPOM 原文链接 — —...

【普中】基于51单片机简易计算器数码管显示设计( proteus仿真+程序+实物演示+讲解视频)

【普中开发板】基于51单片机简易计算器数码管显示设计( proteus仿真程序实物演示讲解视频&#xff09; Proteus 仿真&#xff1a;Proteus 8.16(有低版本) 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;P04 1. 主要功能&#xff1a…...

【Android】DeepLink

官方文档&#xff1a;创建指向应用内容的深层链接 Intro to Deep Linking on Android What is Deep linking? Deeplinks are a concept that help users navigate between the web and applications. They are basically URLs which navigate users directly to the specif…...

微服务Redis-Session共享登录状态

一、背景 随着项目越来越大&#xff0c;需要将多个服务拆分成微服务&#xff0c;使代码看起来不要过于臃肿&#xff0c;庞大。微服务之间通常采取feign交互&#xff0c;为了保证不同微服务之间增加授权校验&#xff0c;需要增加Spring Security登录验证&#xff0c;为了多个服务…...

30道C++ 基础高频题整理(附答案背诵版)

1. C和C有什么区别&#xff1f; C是C语言的超集&#xff08;我看网上很多文章说这是不对的&#xff09;&#xff0c;这意味着几乎所有的C程序都可以在C编译器中编译和运行。然而&#xff0c;C引入了许多新的概念和特性&#xff0c;使得两种语言在一些关键点上有显著的区别。 …...

【Spark面试】Spark面试题答案

目录 1、spark的有几种部署模式&#xff0c;每种模式特点&#xff1f;&#xff08;☆☆☆☆☆&#xff09; 2、Spark为什么比MapReduce块&#xff1f;&#xff08;☆☆☆☆☆&#xff09; 3、简单说一下hadoop和spark的shuffle相同和差异&#xff1f;&#xff08;☆☆☆☆☆…...

Axure的动态面板

目录 动态面板 什么是Auxre动态模板 动态模板的步骤 应用场景 实战案例 轮播图 多功能登录界面 主界面左侧菜单栏 动态面板 什么是Auxre动态模板 动态面板是Axure中的一个重要功能&#xff0c;它允许用户创建可交互的页面&#xff0c;并模拟用户与页面的交互。通过添加元素…...

【STM32】STM32学习笔记-对射式红外传感器计次 旋转编码器计次(12)

00. 目录 文章目录 00. 目录01. NVIC相关函数1.1 NVIC_PriorityGroupConfig函数1.2 NVIC_PriorityGroup类型1.3 NVIC_Init函数1.4 NVIC_InitTypeDef类型 02. 外部中断相关API2.1 GPIO_EXTILineConfig2.2 EXTI_Init2.3 EXTI_GetITStatus2.4 EXTI_ClearITPendingBit2.5 中断回调函…...

后端项目操作数据库-中枢组件Service调用Mapper实现增删改查-实例

接上篇 使用MyBatis配置Mapper实现增删改查 1.Service的基本作用 Service在代码中的的作用是调用Mapper、被Controller调用。是后端项目中非常重要的组件。 用于设计业务流程、业务逻辑&#xff0c;以保障数据的完整性、有效性、安全性。 2. Service使用举例——“添加相册”…...

kafka学习笔记--节点的服役与退役

本文内容来自尚硅谷B站公开教学视频&#xff0c;仅做个人总结、学习、复习使用&#xff0c;任何对此文章的引用&#xff0c;应当说明源出处为尚硅谷&#xff0c;不得用于商业用途。 如有侵权、联系速删 视频教程链接&#xff1a;【尚硅谷】Kafka3.x教程&#xff08;从入门到调优…...

2023-12-16:用go语言,给定整数数组arr,求删除任一元素后, 新数组中长度为k的子数组累加和的最大值。 来自字节。

2023-12-16&#xff1a;用go语言&#xff0c;给定整数数组arr&#xff0c;求删除任一元素后&#xff0c; 新数组中长度为k的子数组累加和的最大值。 来自字节。 答案2023-12-16&#xff1a; 来自左程云。 灵捷3.5 大体步骤如下&#xff1a; 算法 maxSum1 分析&#xff1…...

libxls - 编译

文章目录 libxls - 编译概述笔记静态库工程测试控制台exe工程测试备注备注END libxls - 编译 概述 想处理.xls格式的excel文件. 查了一下libxls库可以干这个事. 库地址 https://github.com/libxls/libxls.git 但是这个库的makefile写的有问题, 在mingw和WSL下都编译不了. 好在…...

谷歌优化网站链接怎么做/深圳做推广哪家比较好

使用多态&#xff0c;后期扩展功能&#xff0c;不用修改上层策略代码&#xff0c;只需要补充底层模块代码。依赖倒置效果。 * shape.h #ifndef shape_h #define shape_htypedef short int16_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t;struct Shape…...

免费自助建站哪个平台好/优化设计四年级上册语文答案

https://www.pianshen.com/article/1958836725/...

网站建设s/找文网客服联系方式

本地存根和本地伪装就是在消费方部署一个实现了目标接口的伪服务。用于在调用真正服务之前&#xff0c;之后的处理工作。其职能有点类似于Spring 的AOP。 为什么要使用本地存根和本地伪装 本地存根 通常情况下&#xff0c;我们调用接口之前都会生成一个请求对象。并且对…...

网站平台推广/seo服务外包客服

初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法: (1)图的深度优先遍历和广度优先遍历…...

广安市邻水建设局网站/谷歌应用商店下载

board目录中&#xff0c;主要的代码结构分为了src,include两个子目录。分别存放源代码文件。 [objc] view plaincopy#CCarm-linux-gcc CCgcc CFLAGS-lpthread INCPATH-I ../../include OBJ log.o init.o serial.o thread.o socket.o socket_dev.o systeminfo.o main.o …...

视频网站主持人/卖链接的网站

各位玩家好&#xff01;大家期待的破天一剑单机一键安装版终于问世了&#xff01;&#xff01;整个安装程序457M&#xff0c;无须安装SQL2000、补丁&#xff0c;破天单机一键安装,安装过程3分钟,全自动安装。。。20100207(农历小年),做人要厚道,非诚勿扰!设置如下:上线小退60级…...