搭建本地MQTT服务器

环境及所用工具

win10本地环境下,使用docker配置一个mqttbroker,选择emqx

docker操作:Docker_liangchaaaaa的博客-CSDN博客

测试使用MQTTX软件

Docker拉取镜像仓库

docker pull emqx/emqx:4.2.5

可以上官网看最新版本,或直接拉取latest版本

端口映射

docker run -d --name emqx -p 18083:18083 -p 1883:1883 emqx/emqx:4.2.5
  • docker run: 这个命令用于在 Docker 中运行一个容器。
  • -d: 这个选项表示以“后台模式”运行容器,即在后台运行而无需占用你的终端。
  • --name emqx: 这个选项指定容器的名称为 "emqx"。
  • -p 18083:18083: 这个选项将主机的 18083 端口映射到容器内部的 18083 端口。这样可以通过主机的 18083 端口访问容器中运行的 EMQ X 控制台。
  • -p 1883:1883: 这个选项将主机的 1883 端口映射到容器内部的 1883 端口。这样可以通过主机的 1883 端口使用 MQTT 协议与 EMQ X 进行通信。
  • emqx/emqx:4.2.5: 这是要运行的 EMQ X 镜像的名称和版本。具体来说,这里使用的是 EMQ X 4.2.5 版本的镜像

开放端口

如果仅仅是在本地localhost则不用进行此操作

Windows Powershell

New-NetFirewallRule -DisplayName "Allow Port 18083" -Direction Inbound -Protocol TCP -LocalPort 18083 -Action Allow
New-NetFirewallRule -DisplayName "Allow Port 1883" -Direction Inbound -Protocol TCP -LocalPort 1883 -Action Allow

Restart-Service -Name "MpsSvc"

 Linux

firewall-cmd --zone=public --add-port=18083/tcp --permanent
firewall-cmd --zone=public --add-port=1883/tcp --permanent

firewall-cmd --reload

开放端口访问地址:http://ip:port

ip在cmd里用ifconfig查

port默认为1883

用Dashboard进行管理

输入网址:localhost:18083

默认账号:admin

默认密码:public

 

修改配置文件进行认证鉴权

这一步就是让其他设备有权限接入服务器

docker exec -it emqx bash

cd /opt/emqx/etc/plugins

vi emqx_auth_username.conf
# windows系统要保证已经装了vim or vi

修改配置文件

bash-5.0$ cat emqx_auth_username.conf
##--------------------------------------------------------------------
## Username Authentication Plugin
##--------------------------------------------------------------------

## Examples:
##auth.user.1.username = admin
##auth.user.1.password = public
##auth.user.2.username = [email protected]
##auth.user.2.password = public
##auth.user.3.username = name~!@#$%^&*()_+
##auth.user.3.password = pwsswd~!@#$%^&*()_+

auth.user.1.username = demo01
auth.user.1.password = demo01
auth.user.2.username = demo02
auth.user.2.password = demo02
auth.user.3.username = demo03
auth.user.3.password = demo03
auth.user.4.username = demo04
auth.user.4.password = demo04

## Password hash.
##
## Value: plain | md5 | sha | sha256

 重启容器

docker restart emqx

MQTTX测试

本地

搭建本地MQTT服务器_第1张图片

外部设备

搭建本地MQTT服务器_第2张图片

Host里面换成自己的IP地址

如果不是默认端口映射,Port也改成自己映射的端口

通信测试

外部设备订阅主题topic01

搭建本地MQTT服务器_第3张图片

在本地设备的主题topic01发送一条消息

搭建本地MQTT服务器_第4张图片

外部设备收到了消息,测试完成

搭建本地MQTT服务器_第5张图片

你可能感兴趣的:(MQTT,spring,cloud,spring,后端)