别名省的是重复字节
设备周期上报的主题往往很长,每条报文都要重复完整主题名。主题别名允许发布方先在一条报文里声明主题名与别名编号,之后的报文只使用别名。别名是连接级状态:连接断开后需要重新声明,不同连接之间的编号互不相关。
相关特性对照
| 特性 | 作用 | 注意 |
|---|---|---|
| 主题别名 | 用整数替代重复主题名 | 连接级状态,重连后需重新建立 |
| 接收上限 | 限定同时未确认的 QoS 1 与 QoS 2 消息条数 | 超过上限时对端应暂缓发送 |
| 最大报文长度 | 声明可接受的最大报文长度 | 超限时对端应放弃发送并返回原因码 |
| 用户属性 | 随报文传递自定义键值对 | 不适合承载大量业务数据 |
典型使用场景
- 长主题高频上报:别名能明显降低带宽占用与报文处理开销
- 窄带链路:在蜂窝或卫星链路上节省每个报文的固定开销
- 容量受限设备:设备侧声明接收上限,避免被大量下行消息压垮
- 大载荷下发:用最大报文长度声明能力边界,让平台据此分片下发
别名的收益与主题长度成正比:短主题与低频上报场景收益有限,反而增加实现与排错复杂度,是否启用应按实测决定。
主题别名与流控是两类不同的优化:别名压的是报文体积,流控管的是发送节奏。窄带链路上两者常同时启用,但各自参数都需要与对端协商,任何一方不支持时只能退回默认行为。
把别名当成跨连接持久的映射会导致重连后对端解析失败,这类问题通常只在弱网频繁重连时暴露,测试阶段要专门覆盖重连场景。