更新概览
本次版本围绕网络栈重构、协议适配、部署灵活性与可裁剪性等方面进行了系统性优化,重点包括:
- 基于 Tokio 异步运行时重构网络层,摆脱对
ntex
框架的耦合; - 支持 TCP/TLS/WS/WSS 等多种协议,构建标准化传输协议适配层;
- 支持多监听器并行绑定,实现异构网络端点与内外网隔离;
- 通过
crate
形式发布,rmqtt
提供可嵌入、可裁剪的 Broker 能力,适配资源敏感场景的灵活集成需求; - 提供 12 项可选功能模块,支持编译期按需裁剪;
- 引入标准化插件扩展机制,实现协议扩展与业务逻辑注入。
1. 网络层模块化重构
基于 Tokio 对网络层进行全面重构,弃用 ntex
框架及其 MQTT 实现方案,转而采用自研异步网络堆栈以提升性能、解耦框架依赖。
保留并优化 ntex-mqtt
编解码组件,兼顾协议成熟度与兼容性,提升代码复用效率。
2. 原生多协议支持
构建统一的协议适配层,完整支持 TCP、TLS(MQTT over SSL)、WebSocket(WS)及其安全版本 WSS。
实现符合 RFC 6455、RFC 8446 等标准规范的多协议接入能力,支持用户按网络环境与安全策略灵活配置接入通道。
3. 多监听器并行绑定机制
单个 Broker 实例支持并行启动多个监听器(Listener),每个监听器可独立配置协议类型、绑定地址、端口及相关参数, 灵活绑定不同网络端点及协议通道。通过精细化配置,用户可对不同网络、协议、性能及资源使用进行精准控制,满足高并发、多场景的部署需求。
- 灵活部署:支持不同监听器使用定制化参数(如最大连接数、TLS 证书路径、心跳超时等),适配多场景部署需求;
- 内外网隔离:通过监听器分离内网管理流量与外网业务流量,实现边界清晰、权限可控的访问策略;
- 运维友好:便于接入负载均衡器、防火墙规则,简化部署与监控配置。
4. 库模式嵌入
以 crate
级库形式发布,应用方仅需将 rmqtt
作为 Cargo 依赖引入,即可在自身服务中嵌入完整 Broker 功能。该模式支持深度定制与功能裁剪,适合微服务与边缘应用场景。
要在 Rust 项目中使用 RMQTT crate(版本 0.15.0-beta.2),您可以参考:https://crates.io/crates/rmqtt/0.15.0-beta.2
5. 可裁剪功能矩阵(12 项 Feature)
构建包含 12 个模块化功能组件的 Cargo [features]
体系,支持编译时灵活组合功能:
- 减少不必要的依赖与资源占用;
- 控制最终可执行体积,提升运行效率;
- 支持最小集成部署场景。
6. 插件化扩展机制
采用非侵入式插件架构,定义标准扩展接口(Extension Points),支持:
- 运行时热插拔自定义组件;
- 无需修改核心代码即可扩展认证、鉴权、消息路由等功能;
- 满足协议扩展、业务逻辑定制等深度需求。
注:本次更新仅在保持原始需求语义等价的基础上优化架构与表述,未新增任何未声明的功能模块,所有功能特性均可回溯自原始设计目标。
更新完整列表,请参阅 RMQTT Release Notes
Github: https://github.com/rmqtt/rmqtt
Ext Link: https://github.com/rmqtt/rmqtt
评论区
写评论不支持mqtt 3.1,对一些老设备不够友好,不支持QoS 2
👇
SSpirits: 可以说一下 ntex 的瓶颈主要在什么场景吗?我刚开始用 ntex-mqtt 打算做个 MQTT 网关,想借鉴下大佬的经验
可以说一下 ntex 的瓶颈主要在什么场景吗?我刚开始用 ntex-mqtt 打算做个 MQTT 网关,想借鉴下大佬的经验