Mosquitto MQTT的使用及编码

1.MQTT server的选择 — Mosquitto MQTT

Docker-Compose搭建Mosquitto MQTT环境

version: "3"
services:
  mosquitto:
    container_name: mosquitto
    image: eclipse-mosquitto:1.5
    ports:
    - "1883:1883"
    - "9001:9001"
    volumes:
    - /mosquitto/config:/mosquitto/config
    - /mosquitto/data:/mosquitto/data
    - /mosquitto/log:/mosquitto/log

在创建容器之前先整个配置文件,写点东西
创建宿主机挂载目录
直接挂载整个目录,最大的优势就是创建一些配置文件就不需要频繁进入容器内去整活了,可以直接在宿主机挂载目录进行操作`

mkdir -p /mosquitto/config   //存放配置文件、密码文件以及权限配置文件
mkdir -p /mosquitto/data    //存放数据目录,存了个寂寞,啥也没有
mkdir -p /mosquitto/log    //mosquitto运行过程中的日志

整个配置文件

touch /mosquitto/config/mosquitto.conf
persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log

ps:这段配置是个啥我也不知道,可能是数据以及日志持久化的配置,经过使用日志还是需要的,docker logs命令并不能把mosquitto的日志信息给打印出来
创建容器

docker-compose -f 配置文件路径 up -d

ps:默认是允许客户端进行匿名访问的,并且对topic的读写权限也并没有任何限制

1.1 配置用户名密码连接MQTT Server

mosquitto.conf配置文件修改

#关闭允许匿名访问
allow_anonymous false
#指定密码配置文件
password_file /mosquitto/config/pwfile.conf

进入mosquitto容器内
ps:这边有坑,命令行并不是bash

docker exec -it mosquitto /bin/sh
#创建密码文件pwfile.conf
touch /mosquitto/config/pwfile.conf

创建用户

mosquitto_passwd -b /mosquitto/config/pwfile.conf 用户名 密码
1.2 给用户分配topic的读写权限

配置文件增加配置

acl_file /mosquitto/config/acl

在宿主机目录(挂载)创建acl文件

topic read $SYS/# 

# This only affects clients with username "roger". 
#user roger
#topic foo/bar
user xwj
topic write /test/+  
    
# This affects all clients. 
#pattern write $SYS/broker/connection/%c/state
#user xwj
#topic read /test/+ 

PS:上述配置文件配置了xwj用户对/test/+只拥有写权限,没有读权限,在一定程度上保证了topic的安全性

2.SpringBoot框架集成MQTT

MQTT相关依赖

<dependency>
    <groupId>org.springframework.integration</groupId>
    <artifactId>spring-integration-mqtt</artifactId>
</dependency>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值