EMQX服务器的搭建,实现本地机和虚拟机之间的MQTT通信(详细教程)

前言

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。

MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器(EMQX),消息发布者可以同时是订阅者。MQTT协议的实现方式为:

本次实验通过搭建EMQX服务器,实现本地机和虚拟机之间的MQTT通信。

准备工具

1.一台物理机,博主的物理机是Windows10

2.VMware

3.Ubuntu镜像

虚拟机的创建请参考这篇文章

Ubuntu的安装可以参考这篇文章

以上文中均有工具获取方式,大家可以自行网盘下载

虚拟机Ubuntu配置EMQX

我们打开Ubuntu的浏览器,输入以下网址

https://www.emqx.com/zh/downloads-and-install/broker?os=Ubuntu

然后进入 EMQX 的下载页面,根据网站中提供的命令下载安装EMQX服务器

1:配置EMQX Apt源

bash 复制代码
curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash

如果是你的Ubuntu是刚安装上的,可能会提示你'curl'命令找不到,你可以根据它的提示安装curl

2:安装EMQX

bash 复制代码
sudo apt-get install emqx

3:启动EMQX

3:登录EMQX服务器

Ubuntu上使用浏览器访问emqx服务器(用户名admin;密码:public)

访问地址

http://localhost:18083

登陆后会提示你修改密码,测试用的密码可以简单易记些

输入ifconfig查看Ubuntu的IP地址,在Ubuntu的EMQX服务器中输入Ubuntu的IP地址,点击连接即可

至此Ubuntu上的EMQX服务器就已经启动完成了,接下来配置物理机的服务器。

物理机连接EMQX服务器

这里介绍两种方式去连接Ubuntu上的EMQX服务器

方式一(无需安装,直接解压使用)

链接:https://pan.baidu.com/s/1XaPkWTI_AtYmWVuMD8d5HQ?pwd=n99m

提取码:n99m

1:启动本地emqx

解压完成后我们找到bin目录,在该目录下可以新建一个cmd.bat文件,里面的内容是cmd.exe,这样我们就可以双击cmd.bat,打开命令提示行,便于操作。

双击cmd.bat文件,出现命令提示行,输入

bash 复制代码
emqx start

没有报错并且返回了上一级目录说明启动成功!接着测试下关闭服务

在当前目录下输入

bash 复制代码
cd bin
//返回上一级目录,在bin目录下输入
emqx stop

弹出ok说明服务器可以正常启动关闭,我们emqx start 开启服务,然后在物理机浏览器访问emqx服务器(用户名admin;密码:public)

http://localhost:18083

登录后如果需要修改密码,按要求修改即可;如果是英文界面,你可以设置成中文

2:连接Ubuntu的EMQX服务器

方式二(官网下载安装MQTTX工具)

1:下载MQTTX工具

官网地址

https://mqttx.app/zh/downloads

选择合适的版本即可,我这里用的是Windows64位

2:连接Ubuntu的EMQX服务器

下载后直接安装即可,安装步骤比较简单,基本都是下一步,在这里不再赘述。

Ubuntu终端输入ifconfig查看IP地址,然后将Ubuntu的IP地址输入到物理机的MQTTX工具中(前提是Ubuntu上的EMQX服务器已经配置好Ubuntu的IP地址了),点击连接即可。

以上两种方式均可实现连接EMQX服务器。接下来就可以通过修改订阅/发布 的主题进行通话啦!

互发消息测试

物理机上我们使用MQTTX工具进行配置,目前我的物理机上已经完成对Ubuntu的EMQX服务器的连接。

1:配置Ubuntu的EMQX服务器

打开Ubuntu服务器的客户端,Ubuntu上我们配置订阅主题为 PC(也就是物理机上的发布主题),点击订阅;Ubuntu发布主题为EMQX(也就是物理机上的订阅主题),点击发布。

2:配置物理机的MQTTX工具

物理机上我们同样打开客户端,物理机配置订阅主题为EMQX(也就是Ubuntu的发布主题)物理机发布主题我们修改为PC(也就是Ubuntu的订阅主题)

此时在Ubuntu上点击发送,物理机上就可以收到主题为EMQX的信息,还可以用PC的主题发送给Ubuntu订阅的PC

另外还可以新建订阅

当然你也可以使用"物理机连接EMQX的方式一" 实现相互通信

3:一点问题

发现在物理机新建订阅时,需要先删除物理机之前的订阅主题才能在物理机的MQTTX界面看到发送的消息(Ubuntu上发送给物理机的信息一直是可以收到并看见的,但是Ubuntu上一直是可以正常收发信息的。)不知道为什么,如有指点,十分感谢。

物理机删除之前订阅的主题后,在新订阅的主题对话框中可以正常看到收发的信息

相关推荐
剑神一笑14 分钟前
深入理解 Linux gzip 压缩:从 DEFLATE 算法到实战优化
linux·运维·php
LT101579744418 分钟前
2026年智能RPA选型指南:全场景智能自动化适配
运维·自动化·rpa
呉師傅20 分钟前
佳能LBP251dw打印机恢复出厂设置后变成英文菜单没有中文选项如何恢复中文菜单方法
linux·运维·服务器·网络·电脑
陳103026 分钟前
Linux:模拟实现进程池
linux·运维·服务器
Languorous.27 分钟前
Linux 系统简介——开源世界的基石
linux·运维·开源
AI帮小忙29 分钟前
Debian/Ubuntu 系操作系统 Kali2026 & 银河麒麟V10 使用对比
ubuntu·debian
Agent产品评测局35 分钟前
本地化部署vs云端部署,制造业AI Agent方案对比:2026企业级自动化选型全景解析
运维·人工智能·ai·chatgpt·自动化
minji...37 分钟前
Linux 网络基础之传输层TCP(七)确认应答机制,超时重传机制,连接管理机制(三次握手四次挥手),流量控制,滑动窗口,快重传
linux·运维·服务器·网络·网络协议·tcp/ip·http
2401_8582861141 分钟前
OS74.【Linux】线程互斥(3) 线程安全、重入
linux·运维·服务器·开发语言·线程
爱喝水的鱼丶42 分钟前
SAP-ABAP:数据类型与数据对象 第二篇:底层逻辑篇——数据类型的分类体系与底层存储原理
运维·开发语言·学习·sap·abap