文档

MQTT 5.0概述

更新时间:
一键部署

MQTT(Message Queuing Telemetry Transport)5.0是指MQTT 5.0协议,它在原有MQTT 3.1.1版本的基础上引入了一些新特性,例如,用户属性、主题别名、会话过期等,并为原有3.1.1特性做了功能改进,提高了协议的灵活性、可靠性和功能性。本文将为您介绍MQTT 5.0的主要新特性。

背景信息

目前,云消息队列 MQTT 版已支持MQTT3.1.1、5.0版本协议,具体的协议请参见MQTT 5.0MQTT 3.1.1

使用限制

  • 云消息队列 MQTT 版暂不支持共享订阅、遗嘱消息、保留消息功能。

  • 目前专业版、铂金版、Serverless实例可以提供5.0协议功能,存量实例如需使用5.0协议功能需要提交工单申请升级实例版本。

  • 服务端允许设置的最大keepalive为8分钟,超过8分钟的按照8分钟设置。

  • 服务端支持的最大报文大小为128 KB字节,发送报文时,消息体大小不超过64 KB。

    说明

    服务端接收到数据包后不会检查大小,直接推送到服务端。如果您需要服务端检查数据包大小,并在数据包超过最大值时拦截该报文,请联系云消息队列 MQTT 版技术支持,钉钉群号:35228338。

  • 订阅标识符的取值范围为[1, 268435455],超出此范围将会导致订阅失败并收到协议错误的错误码。

  • 客户端允许设置的Receive Maximum最大值为65535,超过该数值则按照65535设置。

  • 如果您需要使用MQTT 5.0相关特性,请请联系云消息队列 MQTT 版技术支持,钉钉群号:35228338。

具体特性的使用限制请参见各特性详情页面。

MQTT 5.0新特性

特性

说明

用户属性

MQTT 5.0报文中引入了用户属性能力,允许在控制报文中添加额外的键值对,允许用户定义完整的UTF8字符串键值对。除了心跳报文,MQTT 5.0控制报文都支持设置用户属性,设备/应用程序可以通过用户属性传递额外的自定义信息。

主题别名

使用蜂窝网络接入物联网平台的物联网设备,大部分对流量和功耗非常敏感。在这种场景下,更小的数据包传输可以降低电量和流量的消耗。主题别名可以将字符串主题替换为数字,从而降低消息的数据包长度。

会话过期

在MQTT 5.0中,把cleanSession修改为cleanStart,还增加了会话过期间隔属性Session Expiry Interval,当cleanStart为false并且连接的时候指定了会话过期时间,那么在会话过期之前客户端重连的时候可以恢复其会话和所有相关状态,当cleanStart为true的时候,离线后会直接删除会话。

消息过期

当消息过期间隔被设置并且消息已过期时,存储的消息将被删除,不会被推送。这在物联网弱网场景下很有用,例如,您不希望过期的指令下发到设备,造成设备行为异常。

订阅选项

客户端订阅某个主题时,可以指定一些参数和选项(例如QoS),可以有效地管理和优化消息传递过程,满足不同应用场景的需求。

请求与响应模式

MQTT 5.0 提供了一种新的请求/响应模式,以支持一对一的通信。在物联网设备的实际业务场景下,可使用请求与响应模式,解决需要回复的场景需求。

消息格式描述

消息增加Payload格式说明,保证发布者和订阅者对数据格式的一致理解,帮助订阅者正确处理数据。

增强端云交互

支持功能参数协商、增强错误码、服务端主动断开等特性,提高问题排查效率。