搭建MQTT Server

使用Mosquitto的docker镜像搭建Mqtt Server。

搭建MQTT Server

一、搭建工作

1、使用Docker部署Mosquitto

(1)创建配置文件

# 创建目录
mkdir /home/mosquitto/config /home/mosquitto/data /home/mosquitto/log

# 新建配置和密码文件
cd /home/mosquitto/config
touch mosquitto.conf pwdfile.conf

(2)初始配置文件

# 不添加listener,只有本机可以访问
listener 1883
# 是否允许匿名登录
allow_anonymous false
# 存放密码文件的位置
password_file /mosquitto/config/pwdfile.conf
# 是否开启持久化
persistence true
# 持久化文件的位置
persistence_location /mosquitto/data
# 日志路径
log_dest file /mosquitto/log/mosquitto.log

(3)安装mqtt容器

# 拉取mosquitto镜像
docker pull eclipse-mosquitto:{tag}

# 运行容器
docker run -it -d \
--name=mosquitto \
-p 1883:1883 \
-p 9001:9001 \
-v /home/mqtt/config:/mosquitto/config/ \
-v /home/mqtt/data:/mosquitto/data \
-v /home/mqtt/log:/mosquitto/log \
eclipse-mosquitto:{tag}

(4)创建用户

# 进入容器内部
docker exec -it mosquitto sh

# 使用命令创建用户(用户名:admin, 密码: test)
mosquitto_passwd -b /mosquitto/config/pwdfile.conf admin test

# 重启容器
docker restart mosquitto

常用命令

# 订阅
mosquitto_sub -u ${userName} -P ${password} -t ${topicName}

# 发布消息
mosquitto_pub -u ${userName} -P ${password} -t ${topicName} -m ${content}

Topic主题通配符

注:   单层通配符和多层通配符只能用于订阅(subscribe)消息而不能用于发布(publish)消息,层级分隔符两种情况下均可使用。

单层通配符 +
仅仅匹配一个主题层次,可用于主题数最后或在主题数内,并与多层次通配符一起使用。例如,test/+和test/+/inline

多层通配符 #
可以指定多层通配符仅仅自己或者在顶层分隔符之后。#与finance/#都是有效的,但是finance#无效。多层通配符在主题树内必须是最后一个使用字符,例如finance/#有效,但是finance/#/closingprice无效。