MQTT Broker
大约 2 分钟
内置 MQTT Broker
FastBee 开源版内置了基于 Netty 开发的 MQTT Broker,无需额外部署 EMQX 或其他 MQTT 服务端。
核心特性
- 协议支持:MQTT 3.1.1
- 连接方式:TCP (1883) + WebSocket (8083)
- QoS 等级:QoS 0、QoS 1
- 消息保留:支持 Retain 消息
- 遗嘱消息:支持 Last Will and Testament
- 会话管理:支持持久会话与清理会话
- 认证机制:产品 ID + 设备密钥认证
架构设计
模块结构
| 模块 | 说明 |
|---|---|
| mqtt-broker | MQTT Broker 核心实现 |
| MqttConnect | CONNECT 消息处理与认证 |
| MqttPublish | PUBLISH 消息处理 |
| MqttSubscribe | SUBSCRIBE 订阅管理 |
| MqttUnsubscribe | UNSUBSCRIBE 取消订阅 |
| MqttPubAck/PubRec/PubRel | QoS 确认流程 |
| ClientManager | 客户端连接管理 |
| SessionManager | 会话状态管理 |
| RetainMsgManager | 保留消息管理 |
| ResponseManager | 响应消息管理 |
连接认证流程
- 客户端发送 CONNECT 消息(ClientID=设备编号, Username=产品ID, Password=设备密钥)
- Broker 调用 AuthService 验证凭据
- 验证通过后创建会话,注册到 ClientManager
- 发送 CONNACK 确认
消息流转
- 设备 PUBLISH → MqttPublish 处理 → 主题匹配 → 路由到业务层
- 业务层下发 → ResponseManager → 找到目标 Session → PUBLISH 到设备
- 订阅/取消订阅 → 更新 Session 的订阅列表
性能调优
- 连接池:单机支持数千并发连接
- Netty 参数:通过
NettyConfig调整 IO 线程数、Boss/Worker 比例 - 内存:合理设置 Netty 缓冲区大小
- 消息队列:使用 Redis 作为消息中间件,解耦 Broker 与业务层
