-
基于Springboot、netty实现的高性能高可用MQTT broker,支持集群,轻松百万连接,千万级别消息量,支持MQTT3.1、MQTT3.1.1、MQTT5.0协议,支持mqtt/ws连接。
-
代码注释规整,严格按照阿里编程规范。
-
可作为脚手架进行二次业务扩展开发。
-
支持软件互联,如经典的聊天、群聊系统接入。
-
IOT 物联网,如智能家电等接入。
mind-mqtt ├── m-common -- 通用工具及常量 ├── m-mqtt-auth -- MQTT认证及授权 ├── m-mqtt-broker -- MQTT borker服务器启动类 ├── m-mqtt-client -- MQTT客户端示例代码 ├── m-mqtt-core -- 核心功能模块,包括消息解析,业务逻辑处理 ├── m-mqtt-cluster -- 集群功能模块 ├── m-mqtt-model -- 实体封装 ├── m-mqtt-monitor -- MQTT健康监控 ├── m-mqtt-store -- MQTT服务器会话信息(redis缓存)
# | 功能 | 是否支持 | 说明 |
---|---|---|---|
1 | Broker管理界面 | 支持 | 可启动配套的前端UI管理界面,健康监控,统计分析,授权管理 |
2 | 集群功能 | 支持 | 连接同一个redis,自动注册节点开启集群 |
3 | 心跳机制 | 支持 | 支持心跳检测 |
4 | MQTT授权认证 | 支持 | 支持授权登录,多用户管理,权限管理(发布和订阅权限) |
5 | ws连接 | 支持 | 自动识别连接协议,支持ws连接 |
6 | mqtt连接 | 支持 | 自动识别连接协议,支持mqtt连接 |
7 | 遗嘱消息 | 支持 | 支持离线自动发送遗嘱 |
8 | Kafka消息转发功能 | 不支持 | 预留数据持久化接口,可自行实现 |
9 | 授权管理 | 支持 | 可启动配套的前端UI管理界面,支持多用户管理,权限管理(发布和订阅权限) |
10 | 消息分发重试 | 支持 | 针对qos1/qos2消息做了优化,尤其qos2消息,确保在网络差的情况下也能准确不重复的送达。 |
11 | 黑名单 | 支持 | 禁止该用户连接 |
12 | 消息持久化 | 不支持 | 预留数据持久化接口,可自行实现 |
13 | MQTT5.0 | 支持 | 已支持5.0协议 |
14 | 流量监控、限流 | 支持 | 可启动配套的前端UI管理界面查看配置,进行限流 |
15 | 硬件监控 | 支持 | 可启动配套的前端UI管理界面查看 |
# | 软件 | 版本 | 是否必须 | 说明 |
---|---|---|---|---|
1 | redis | 6.2.6 | 是 | 有安装就行,版本不做要求 |
2 | JDK | Jdk11+ | 是 | 必须JDK11以上,否则无法运行,下载openJDK11即可,商用免费的 |
3 | mysql | 8.0.27 | 否 | 版本5.7 以上就行,如不需要管理界面,可不安装mysql |
# 项目打包
cd mind-mqtt
mvn clean package
mvn clean install
找到打包后的jar包,路径
mind-mqtt/m-mqtt-broker/target/m-mqtt-broker-1.0.0.jar
-
win
打开cmd
java -jar m-mqtt-broker-1.0.0.jar
-
linux
java -jar m-mqtt-broker-1.0.0.jar
-
docker
略
服务端会选择发布消息和订阅消息中较低的QoS来实现消息传输,这也被称作“服务降级”。
-
QoS = 0 占用的网络资源最低,但是接收端可能会出现无法接收消息的情况,所以适用于传输重要性较低的信息。
-
QoS = 1 MQTT会确保接收端能够接收到消息,但是有可能出现接收端反复接收同一消息的情况。
-
QoS = 2 MQTT会确保接收端只接收到一次消息。但是QoS为2时消息传输最慢,另外消息传输需要多次确认,因此所占用的网络资源也是最多的。此类服务等级适用于重要消息传输。
由于QoS1和QoS2都能确保客户端接收到消息,但是QoS1所占用的资源较QoS2占用资源更小。