本文为您介绍MQTT 5.0的新特性用户属性。
背景信息
MQTT 5.0报文中引入了属性能力,允许在控制报文中添加额外的键值对。这项属性在实现MQTT 5.0的许多特性时非常重要,例如会话过期、消息过期和请求响应模式都是基于用户属性实现。用户属性是属性的一种,允许用户定义完整的UTF8字符串键值对,类似于HTTP标头。除了心跳报文,MQTT 5.0控制报文都支持设置用户属性,设备/应用程序可以通过用户属性传递额外的自定义信息。用户属性消息示例如下。
Topic: “sys/${productkey}/${devicename}/update”
Payload: "hello world!"
UserProperty: "key1_timestamp:value1_12345"
UserProperty: "key2_msgid:value2_123"
使用限制
最多支持20个用户属性。
物联网平台只处理
Connect/Publish
报文中的用户属性。
应用场景
消息内容格式
通过用户属性描述Payload,实现同一Topic支持不同类型的Payload,方便管理不同批次的设备。
消息分包处理
MQTT协议适用小包场景,MQTT 5.0支持设备与平台协商最大的包长度,如果最大的包长度不能满足业务需求,可以利用用户属性可以实现分包处理。在下图中,设备端发送消息时进行分包,将示例消息分拆成消息A和消息B。应用端通过获取消息中的用户属性,识别分包标识,并完成消息聚合处理。更多信息,请参见什么是服务端订阅。
消息流转
通过用户属性定义消息的流转类型及目的地,在规则引擎中识别属性并执行消息流转。在下图中,设备端上报不同类型的消息,通过UserProperty
定义消息的流转目的地。更多信息,请参见云产品流转概述。