基于 MQTT 的文件传输
EMQX 的 MQTT 文件传输功能使 MQTT 客户端设备具备了将大文件通过 MQTT 协议传输到 EMQX 的能力。这个功能在需要传输文件的物联网应用中非常有用,例如从智能摄像头流式传输视频,将车辆日志文件发送到分析服务器,或将仓库机器人捕获的图像传输到云服务器进行审核。MQTT 协议在用于其他操作的同时也可用于传输文件,于是客户端设备无需再使用 HTTP 或 FTP 等其他协议。
传统方式的缺点
在引入 MQTT 文件传输之前,物联网设备必须应用 HTTP 或 FTP 等其他协议来传输文件。然而,HTTP 或 FTP 协议无法支持大规模连接,多个连接通道也不易于设备端的开发和操作。这种传统方法还有其他一些缺点,包括需要实现附加协议及其相关的安全性和身份验证机制。在客户端设备上管理复杂状态并维护处理文件传输的独立服务进一步增加了挑战。
EMQX 中的 MQTT 文件传输
MQTT 规范没有定义传输文件的标准方式。而 EMQX 扩展了 MQTT 协议、有助于客户端设备进行高效且安全的文件传输。它定义并实现了一个建于 MQTT 之上的简单应用级协议,使客户端设备能简单得处理文件传输。
主要特点
以下特点是 MQTT 文件传输功能的亮点:
支持与其他业务使用同一个 MQTT 连接,充分复用现有的客户端管理体系;
支持分块传输,这意味着轻量级的客户端也能够处理大型文件,同时超过 MQTT 协议限制大小(256MB)的文件也能够被传输;
支持断点续传,客户端设备可以随时暂停文件传输以进行更高优先级的数据传输,或从网络中断中恢复传输;
可靠性保障,通过 QoS 1 级别消息进行传输,提供了校验、重传机制确保文件传输完整性;
灵活的存储层配置,上传的文件能够保存到本地指定目录或与 S3 兼容的对象存储中,方便后续使用。