5.0 补的是什么
3.1.1 定义的是最小可用的发布订阅:连接、发布、订阅与保活。5.0 把大规模运营需要的细节标准化——每个报文都能带回原因码与属性,会话有了过期时间,订阅可以分组分担,重复的主题名可用别名压缩,请求响应模式与流控参数也从私有约定变成协议能力。
主要增强对照
| 特性 | 作用 | 注意 |
|---|---|---|
| 原因码 | 订阅被拒、报文被拒等场景有明确返回 | 客户端应据此区分可重试与应放弃 |
| 属性集合 | 会话过期、接收上限、最大报文、认证方式等 | 服务端不支持时需按返回结果降级 |
| 会话过期时间 | 服务端自动清理离线会话 | 避免持久会话无限堆积 |
| 共享订阅 | 同一订阅组内消息只投给一个成员 | 用于横向扩展消费者 |
| 主题别名 | 用短整数替代重复主题名 | 连接级状态,双方需协商上限 |
| 请求响应 | 响应主题与关联数据字段 | 替代自行约定的私有字段 |
| 用户属性 | 自定义键值对随报文传递 | 不要用来承载业务数据的主体内容 |
| 遗嘱延迟 | 延后发布遗嘱,抑制状态抖动 | 需与离线判定策略配合 |
典型使用场景
- 授权失败定位:靠原因码区分是凭据问题还是主题权限问题
- 消费者横向扩容:用共享订阅把同一主题的消息分给多个处理实例
- 长主题高频上报:用主题别名压缩报文体积
- 设备与平台的状态类交互:用请求响应模式替代自建的私有应答字段
版本协商发生在连接阶段:服务端与客户端的支持范围不一致时,行为取决于返回结果,客户端需要在连接后检查实际生效的参数。
启用 5.0 特性前必须确认服务端与客户端库都支持,否则会出现连接被拒或属性被静默忽略,问题在业务层才暴露。