快速结论:IBMS重新订阅MQTT后收到的消息,可能是先前保存的状态,而不是刚发生的告警。应区分保留消息、会话积压、源事件时间与接收时间,核对消息有效期、订阅选项和状态恢复,不能仅按到达时刻触发新事件。
作者:南京古河软件|发布日期:2026-10-22
建筑值班系统重启后,某测点立刻出现一条异常消息。它可能是新的状态变化,也可能是消息服务器为新订阅保存的先前值。IBMS应先核对消息用途、来源与事件时间,再决定更新状态、补记历史还是产生新的业务事件。
本文讨论MQTT 5.0普通非共享订阅的通用机制。它与消息重复去重不同:唯一事件也可能已经过时,旧状态也可能仍需复核。消防、设备保护和现场应急职责不由消息接入逻辑替代。
OASIS MQTT 5.0第3.3.1.3节说明,客户端设置RETAIN后,服务器按主题保存相应消息,供后续匹配订阅使用。同一主题的新保留消息替换先前保留内容;不能把这一份快照当成该设备全部告警的事件流水。
需要特别检查恢复路径:先把异常状态作为保留消息发送,后来正常状态却用RETAIN=0发送,后者不会替换或删除原有保留消息。新订阅者仍可能拿到旧异常。因此实时在线看到恢复,与后来订阅拿到什么,应分别验收。
协议提供用RETAIN=1且载荷零字节删除该主题保留内容的机制。但删除消息不是业务上的设备恢复、告警确认或维修结案。使用时应核对主题、授权和审计,不能对真实生产主题盲目清空。
第3.8.3.1节的Retain Handling控制建立订阅时是否发送保留内容:0表示发送,1表示仅该订阅此前不存在时发送,2表示不在建立订阅时发送。这里不能简化成重连永远不收旧值;是否重建订阅、会话是否保留及客户端行为都需要记录。
Retain As Published影响已建立订阅上的RETAIN标志转发方式;订阅建立时发送的保留消息另有标记规则。因此不能把一个RETAIN位当作通用的年龄检测器,也不能把RETAIN=0直接解释成刚发生。会话中积压的普通消息同样可能较旧。
第3.3.2.3.3节的Message Expiry Interval以秒约束消息寿命;未设置时协议不为该应用消息设置过期。服务器等待时间会从后续传递的有效期扣除。保留消息过期会被丢弃,但这不保证现场数据新鲜,也不代替业务端核验源时间、时钟和状态。
工程核对至少区分设备与测点身份、消息用途、源事件时间、接收时间、源版本或事件身份、保留标记及有效期。后四类业务字段如何编码由接口约定,不是MQTT自动提供的一份完整告警模型。中间桥接或网关还应说明哪些信息可能被重写或丢失。
状态消息可用于初始化显示,但是否作为当前有效状态,要结合时效阈值和后续刷新;事件消息应核对源事件身份及发生时间,再按业务规则处理。只以接收时间赋予新事件身份,会把重订阅误当成现场再次异常。
发现旧异常时不能简单丢弃,也不能自动派出一张新工单。可按项目规则标为历史补报或状态待复核,并查询约定的当前状态来源;时钟冲突、时间缺失或无法确认恢复时,保留未知结论及核查责任。
以下是建议用例,本文没有实际运行。仅使用自有隔离环境、虚构测点与普通非共享订阅;记录协议版本、客户端实际订阅选项、服务器支持、输入序列和业务判定,不在真实消防或控制系统制造故障。
正常初始化:向模拟状态主题发送带源时间的有效保留值,建立匹配订阅。预期按约定收到初始化快照,保留源时间并单独记录接收时间;把初始化直接统计成新告警,不通过。
恢复未覆盖:先保留异常,再以非保留方式发送正常,随后建立新订阅。预期能解释并识别旧保留异常;再按明确策略更新保留快照,验证新订阅结果。只看在线恢复就宣布重订阅安全,不通过。
订阅选项:在声明的同一会话和新会话条件下,分别核对Retain Handling的0、1、2。预期结果符合订阅是否既有的条件;只写一次重连成功、不记录订阅行为,不足以验收。
过期与时间异常:分别使用有效、超过约定消息有效期以及源时间缺失的模拟输入。预期协议层按支持范围处理过期,业务层独立处理数据时效与未知状态;无消息就判设备正常、收到消息就判事件新鲜,均不通过。
| 核对对象 | 回答的问题 | 不能直接推断 |
|---|---|---|
| 主题保留快照 | 新订阅可拿到什么 | 完整告警历史 |
| 订阅选项与会话 | 本次为何收到消息 | 源事件刚发生 |
| 消息有效期 | 协议是否仍允许交付 | 现场状态一定新鲜 |
| 源时间与业务身份 | 属于哪次变化及何时发生 | 只凭接收时间判新事件 |

古河官网公开资料说明设备与测点、实时历史数据、告警及接口协同。本文MQTT选项、时间判据与核验用例属于通用标准解释和工程建议,不证明古河默认实现全部MQTT 5.0功能;实际按组件版本、接口约定、项目配置集成开发与验收确认。
相关资料:IBMS设备数据与告警协同;智慧建筑系统集成分工。
2026-10-22实际打开OASIS MQTT Version 5.0,2019-03-07 OASIS Standard,第3.3.1.3、3.3.2.3.3及3.8.3.1节。MQTT 5.0官方标准全文及对应章节。标准机制与IBMS工程判据分层;未复制标准图片,建议用例未运行,不作为认证或现场保护保证。
南京古河软件|通用技术说明,不含客户资料或内部实现。