mosquitto查看订阅记录_eclipse-mosquitto MQTT发布/订阅测试

本文介绍了如何使用Dockerfile和docker-compose搭建mosquitto MQTT服务,包括配置不允许匿名访问、设置用户权限、数据持久化、日志记录以及通过9001端口支持WebSockets。还详细讲解了如何创建和管理用户密码文件、设置ACL以控制用户对Topic的读写权限,并提供了MQTTBox作为测试工具。
摘要由CSDN通过智能技术生成

eclipse-mosquitto MQTT发布/订阅测试

使用docker创建mosquitto服务

这里我使用的是Dockerfile + docker-compose 拉起一个容器

Dockerfile

FROM eclipse-mosquitto

EXPOSE 1883 9001

mosquitto.conf 配置文件

# 设置不允许任何人访问,连接时需要用户名和密码

allow_anonymous false #false表示不允许匿名连接

password_file /mosquitto/passwd #用户名及密码配置文件

acl_file /mosquitto/acl #配置用户对topic的读写权限

persistence true

# 将数据持久化及日志保存到指定目录

persistence_location /mosquitto/data/

log_dest file /mosquitto/log/mosquitto.log

# 默认端口是 1883

port 1883

# 以下两行表示可以通过9001端口以websocket的方式连接mosquitto服务

listener 9001

protocol websockets

passwd文件

admin:$6$F6wFChyMts4WY7Xh$mTNroyvh4CGs0qLfisuQGZwvGRizRdRXZqgF2l/5J9X/Lp/K0ZniLbUOEk5yT/nZNu45zdY4JfXvrJB7djc4Bw==

subreader:$6$3AFNzcXFSwNByauv$3DBKMWchklzDT1KYK1O1hbbYzKMJPVCuv5Ed1dwIdAkicu4UljRu30TW0fFEbC/nLO4dfPrDSN1VWGY/iyOfVQ==

passwd文件的创建及用户添加方法,下面介绍

acl文件

user admin

topic #

user subreader

topic read topic/#

docker-compose.yml中关于mosquitto的配置

mosquitto:

build:

docker/mosquitto

volumes:

- ./docker/mosquitto/data:/mosquitto/data/

- ./docker/mosquitto/log:/mosquitto/log/

- ./docker/mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf

- ./docker/mosquitto/passwd:/mosquitto/passwd

- ./docker/mosquitto/acl:/mosquitto/acl

ports:

- "1883:1883"

- "9001:9001"

container_name: mosquitto

command: mosquitto -c /mosquitto/config/mosquitto.conf

mqtt服务的测试,可以下载工具:MQTTBox

创建用户密码文件及添加用户

docker启动后,进入到容器

docker exec -it mosquitto sh

进入容器后,输入下面的命令

mosquitto_passwd -c /mosquitto/passwd admin

注意,如果passwd文件不存在时,才使用上面的命令。如果passwd文件已存在,则去掉-c参数。(即上面的命令表示,创建passwd并添加新用户,在已有文件中添加用户,执行下面的命令)

mosquitto_passwd /mosquitto/passwd admin

执行以上添加用户的命令后,命令行中提示输入新用户的密码,密码要求输两次进行确认。

密码确认完成后,即可到/mosquitto目录下查看文件,如代码所示。

设置用户的发布/订阅权限

#用户信息

user pub

#用户可访问的topic,这里为可读可写

topic mytopic/news

#订阅用户可访问权限

user sub

#这里为只读

topic read mytopic/news

#用通配符表示多个topic

user sub_user

#topic可用通配符表示以topic/打头的所有topic都可读

topic read topic/#

关于通配符的使用,有两个通配符可用,#和+,具体用法举例说明

test/jh/# 可匹配  test/jh/a/b/c  ,test/jh/a/b  ,test/jh/a.test/jh

test/jh/+可匹配  test/jh/a ,test/jh/b ,但是不能匹配 test/jh/a/b

另外,若password_file中配置了用户A,但是acl中未配置用户A对应的主题权限,则用户A可以发布和订阅所有的主题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值