MQTT消息除了载荷,还要表达它发往哪个主题。若主题路径较长、载荷却很短,反复传送完整主题名就会占据报文的一部分。AWS于2022年11月28日介绍IoT Core的MQTTv5新功能时,以Topic aliases说明了一种不同表达:先给主题指定数字别名,后续发布再用这个数字引用主题。
文章给出的例子是一个较长的温度主题路径,并将它标为83字节;示例传感器值是23.2。这里的字节数描述示例主题,不是温度值的大小,也不是本文测得的设备流量。原文用它说明长名称可能带来的重复开销,没有为所有物联网消息给出统一节省比例。
真正需要保留的关系出现在后面的解释中。示例第一次发布温度值时,同时把主题别名设为1;下一次发布只引用这个别名,而不再指定完整主题。原文说明这些消息在代理端仍对应同一个主题。因此,别名省略的是后续报文中反复出现的主题名称,并不是把温度载荷改成数字1,也不是凭空建立另一个同名数据来源。
这个对应关系带有清楚的期限:1的有效期直到当前连接结束。它不能被当作永远绑定到该主题的公共编号。仅从另一份材料中看到同一个数字,也不足以认定两份材料正在指向同一主题;还需要对应的连接及当时已建立的别名关系。这个解释停在文档语义,没有模拟重连或替真实设备设计连接行为。
读物联网连接资料时,可以把完整主题名、后续引用它的数字以及当前连接范围分别保留。这样,看到报文示意中后续没有再出现完整路径,就不必立即判断主题信息丢失;但若没有取得别名对应的上下文,也不能自行猜出它代表哪个主题。这是一种阅读资料的方法,不是本文已连接代理或确认消息送达的证明。
本篇只采用这份历史AWS官方文章的第三节及相邻说明,日期是原文刊头,不把当时的新功能宣传当成当前所有代理的共同实现。原页另有脚本、配额和其他过期参数内容,本文没有执行或转述设备操作,也不承诺带宽费用、续航、可靠性和安全结果。主题别名的具体价值在于连接内的重复名称表达,保留有效期,才能避免将临时引用误说成永久身份。
信息来源
本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。