错误响应
按 HTTP 状态和协议层正确处理失败。
先判断网络与 HTTP 状态,再按端点 Schema 解析响应。不要依赖统一错误字段或错误文本。
HTTP 处理
| 结果 | 是否重试 | 处理方式 |
|---|---|---|
400 | 否,除非先修改请求 | 校验 JSON、UID、Channel、游标和必填字段 |
503 maintenance | 是,有界退避 | 等待恢复维护结束,并观察 /readyz |
其他 5xx 或网络超时 | 条件重试 | 使用指数退避、抖动、上限和取消 |
2xx 但响应不符合 Schema | 否 | 停止处理并检查版本或合同漂移 |
常见错误体:
{"msg":"...","status":400}
{"error":"maintenance","message":"restore maintenance is active"}错误文本不是稳定机器合同;客户端应根据 HTTP 状态和 Schema 分支。
协议边界
HTTP 成功不代表 CONNECT、SENDACK、实时投递或已读成功。CONNACK 与 SENDACK 应按对应包类型和 Reason Code 单独处理;未知值应停止并报告。
日志安全
- 记录方法、路径、HTTP 状态和独立请求 ID。
- 不记录 Token、Authorization、Cookie、UID、消息正文或完整原始错误体。
- 对可重试错误设置次数、时长和并发上限。