本地的mqttbroker

本地的mqttbroker,第1张

本地的mqttbroker

写在前面:这里是win10本地环境下,使用docker配置一个mqttbroker,选择emqx,

先去官网找镜像

1.mqttbroker

拉取镜像

建议拉取image一定指定版本号(dockerhub找镜像,https://hub.docker.com/)这里选择4.2.5版本,我已经安装好了镜像

docker pull emqx/emqx:4.2.5

运行容器

(win 跳过这里) linux中则直接在容器内部修改即可,挂载也没有那么繁琐,linux挂载也很简单

win下,挂载出了问题,config文件没挂载出来,需要共享盘才可以;我还是在容器内部修改吧,win下测试而已,部署一般在linux,都可以挂载成功;

这里要两个端口就可以

docker run -d --name emqx -p 18083:18083 -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 emqx/emqx:4.2.5

docker run -d --name emqx -p 18083:18083 -p 1883:1883 emqx/emqx:4.2.5

执行完,服务就已经起来了,可以测试服务了

我这里直接进去了,是因为有浏览器缓存

第一次进需要密码

然后,部署的话,还需要开放端口

(运行发现要修改文件配置,win10 下 还是挂载出来比较好,[宿主机:容器],必须为绝对路径)
(win中,路径需要改写,如c:test 改为 /c/test)
(同时如果容器还没运行起来,那就是需要权限,则需要以管理员身份启动控制台)

docker run -d --name emqx01 -v /c/Users/ts/Desktop/docker_volume:/opt/emqx/etc -p 18083:18083 -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 emqx/emqx:4.2.5

开放端口(本地开发环境不需要,部署时需要)

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


firewall-cmd --zone=public --add-port=8083/tcp --permanent
firewall-cmd --zone=public --add-port=8084/tcp --permanent
firewall-cmd --zone=public --add-port=8883/tcp --permanent

重启防火墙(本地开发环境不需要,部署时需要)

firewall-cmd --reload

云服务器安全组开放端口(本地开发环境不需要,部署时需要)

在云服务器控制台里,开放端口

访问mqttbroker(测试服务是否启动)

默认端口: 18083

地址:http://ip:port

emqx管理后台默认初始用户名 admin 密码 public

如图 http://localhost:18083/[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sljoEIdl-1642393889787)(C:UserstsAppDataRoamingTyporatypora-user-images1642159362057.png)]

2.使用mqttx连接broker

(之前使用mqtt.fx,不太好上手,换了mqttx)

需要先添加用户,在容器内部的配置文件里面

进入容器

docker exec -it emqx bash

# 到插件路径下
cd /opt/emqx/etc/plugins

# 修改用户配置文件
vi emqx_auth_username.conf

新增几个用户和密码(至少两个)(要会使用vim)(修改后的结果如下)

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

重启emqx容器

docker restart emqx

使用mqttx连接

订阅topic

demo01订阅了tp01,于是其他client发布tp01的信息,demo01会收到

群发也可以

自己订阅了,自己发,自己也会收到

测试

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5704338.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存